Найти - Пользователи
Полная версия: Прослушивание сообщения от пользователя. (Vk bot)
Начало » Python для экспертов » Прослушивание сообщения от пользователя. (Vk bot)
1
Stelland
Здравствуйте. Написал простенького бота для вк группы, вот теперь не могу понять, как реализовать что, человек ввёл команду, после чего бот ждёт от пользователя ещё введённого сообщения и после чего можно вытащить из бота, последнее введённое сообщение?
Вот код:
 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()
                )
Пример: Человек нажимает на кнопку: Купить пин-код.
После чего бот присылает список доступных пин-кодов. И следующим сообщением человек выбирает какой пин код он хочет купить.
py.user.next
Конечный автомат нужно строить. То есть бот должен стать конечным автоматом и у него должна быть память, где он запомнит своё состояние. В каждом состоянии у него будут свои реакции на одно и то же сообщение от пользователя.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB