我正在 aiogram 库上编写一个 tg 机器人。我的状态机有错误,我不明白问题出在哪里。这是我的代码:
import asyncio
import time
import config
from keyboards import markup
from aiogram import Bot, Dispatcher, executor, types
from sqlighter import SQLighter
from aiogram.dispatcher.filters import Command
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.contrib.fsm_storage.memory import MemoryStorage
class NowState(StatesGroup):
Kazino = State()
KazinoPlay = State()
bot = Bot(token=config.token)
dp = Dispatcher(bot, storage=MemoryStorage)
db = SQLighter('db.db')
@dp.message_handler(commands=['start'], state='*')
async def add_user(message: types.Message):
print(f'{message.date} Пользователь {message.chat.first_name} зашел в /start')
if (not db.user_exists(message.from_user.id)):
db.add_user(message.chat.first_name, message.from_user.id, message.from_user.username)
print(f'{message.date} Пользователь {message.chat.first_name} внесен в БД')
await bot.send_sticker(message.chat.id, 'CAACAgIAAxkBAAJLLWNy-iWyrGNFW3RjDXvoPX2_OHlzAAKHFQACPQ9QSd6bZv3Wx6O_KwQ')
await bot.send_message(message.chat.id, "Привет, {0.first_name}!".format(message.from_user), reply_markup=markup)
@dp.message_handler(commands=['feedback'], state='*')
async def feedback(message: types.Message):
print(f'{message.date} Пользователь {message.chat.first_name} зашел в /feedback')
await bot.send_message(message.chat.id, 'Связь с разработчиком - https://t.me/ook_da')
@dp.message_handler(content_types=['sticker'], state='*')
async def sticker(message):
print(f'{message.date} Пользователь {message.chat.first_name} просто скинул стикер, айди этого стикера: {message.sticker.file_id}')
await message.reply('Я тебя не понял.')
await bot.send_message(938764214, f'Стикер от пользователя {message.chat.first_name}')
await bot.send_sticker(938764214, message.sticker.file_id)
@dp.message_handler(state=None)
async def text_messages(message: types.Message, state: FSMContext):
if message.text == 'Крестики-Нолики❌⭕️(beta)':
print(f'{message.date} Пользователь {message.chat.first_name} зашел в Крестики-Нолики❌⭕️(beta)')
await message.answer('крестики нолики')
elif message.text == 'Сообщение другому пользователю' and message.from_user.username == 'ook_da':
print(f'{message.date} Пользователь {message.chat.first_name} зашел в Сообщение другому пользователю')
await bot.send_message(message.chat.id, 'скоро будет')
elif message.text == 'Казино💸':
await bot.send_message(message.chat.id, 'Позже')
await NowState.Kazino.set()
else:
print(f'{message.date} Пользователь {message.chat.first_name} написал {message.text} ')
await message.reply('Я тебя не понял.')
@dp.message_handler(state=NowState.Kazino)
async def kazino(message: types.Message, state: FSMContext):
if message.text == 'Баланс':
print(f'{message.date} Пользователь {message.chat.first_name} зашел в Баланс')
await bot.reply('Ваш баланс: 1000')
elif message.text == 'Назад🔙':
print(f'{message.date} Пользователь {message.chat.first_name} зашел в Назад🔙')
bot.reply('Хорошо', reply_markup=markup)
state.finish()
elif message.text == 'Игра':
print(f'{message.date} Пользователь {message.chat.first_name} зашел в Игра')
bot.reply('Погнали играть!')
await NowState.KazinoPlay.set()
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
@ dp.message_handler (state=None)和@dp.message_handler(state=NowState.Kazino) 错误