Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 21, 2019 10:23:07

Stelland
Зарегистрирован: 2019-07-23
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Прослушивание сообщения от пользователя. (Vk bot)

Здравствуйте. Написал простенького бота для вк группы, вот теперь не могу понять, как реализовать что, человек ввёл команду, после чего бот ждёт от пользователя ещё введённого сообщения и после чего можно вытащить из бота, последнее введённое сообщение?
Вот код:

 import vk_api
import random
from vk_api.longpoll import VkLongPoll, VkEventType
import sqlite3
token = '...' <- тут токен
vk_session = vk_api.VkApi(token=token)
longpoll = VkLongPoll(vk_session)
vk = vk_session.get_api()
conn = sqlite3.connect('stell_game.db', check_same_thread=False)
cursor = conn.cursor()
try:
    cursor.execute('''CREATE TABLE stellyt
                    (User_ID integer, Score integer, Pin integer)
                    ''')
except sqlite3.OperationalError:
    pass
global Random
def random_id():
    Random = 0
    Random += random.randint(0, 10000000)
    return Random
while True:
    score = 0
    pin = 0
    for event in longpoll.listen():
        if event.type == VkEventType.MESSAGE_NEW and event.to_me:
            if event.text.lower() == 'привет':
                vk.messages.send(
                    user_id = event.user_id,
                    message = 'Хаю хай!',
                    keyboard = open('keyboard.json', 'r', encoding='UTF-8').read(),
                    random_id = random_id()
                )
            elif event.text.lower() == 'старт' or event.text.lower() == 'start':
                us_id = str(event.user_id)
                args = int(us_id)
                cursor.execute(""" SELECT User_ID FROM stellyt WHERE User_ID = ? """, [args])
                row = cursor.fetchone()
                if row == None:
                    cursor.execute('insert into stellyt (User_id, Score, Pin) values (?, ?, ?)', (us_id, score, pin))
                    print(cursor.execute('select * from stellyt').fetchall())
                    conn.commit()
                    vk.messages.send(
                        user_id=event.user_id,
                        message="Привет! \nТы находишься в вк боте от Stelland'a! \U0001F603",
                        keyboard=open('keyboard.json', 'r', encoding='UTF-8').read(),
                        random_id=random_id()
                    )
                else:
                    vk.messages.send(
                        user_id=event.user_id,
                        message="Привет! \nТы находишься в вк боте от Stelland'a! \U0001F603",
                        keyboard=open('keyboard.json', 'r', encoding='UTF-8').read(),
                        random_id=random_id()
                    )
            elif event.text.lower() == 'помощь по боту':
                vk.messages.send(
                    user_id=event.user_id,
                    message='Здесь будет написана вся инструкция по боту!',
                    keyboard=open('keyboard.json', 'r', encoding='UTF-8').read(),
                    random_id=random_id()
                )
            elif event.text.lower() == 'получить монеты':
                sent = vk.messages.send(
                    user_id=event.user_id,
                    message='Здесь вы будете получать монеты',
                    keyboard=open('keyboard.json', 'r', encoding='UTF-8').read(),
                    random_id=random_id()
                )
                vk(sent, get_mess)
            else:
                vk.messages.send(
                    user_id=event.user_id,
                    message='Неизвестная команда',
                    random_id=random_id()
                )
Пример: Человек нажимает на кнопку: Купить пин-код.
После чего бот присылает список доступных пин-кодов. И следующим сообщением человек выбирает какой пин код он хочет купить.

Офлайн

#2 Авг. 21, 2019 11:49:01

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Прослушивание сообщения от пользователя. (Vk bot)

Конечный автомат нужно строить. То есть бот должен стать конечным автоматом и у него должна быть память, где он запомнит своё состояние. В каждом состоянии у него будут свои реакции на одно и то же сообщение от пользователя.



Отредактировано py.user.next (Авг. 21, 2019 11:49:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version