Форум сайта python.su
Здравствуйте. Написал простенького бота для вк группы, вот теперь не могу понять, как реализовать что, человек ввёл команду, после чего бот ждёт от пользователя ещё введённого сообщения и после чего можно вытащить из бота, последнее введённое сообщение?
Вот код:
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 (Авг. 21, 2019 11:49:23)
Офлайн