Машина состояний aiogram
Для бота понадобилось в процессе "общения" сунуть машину состояний с одним полем name
Ниже представлены фрагменты кода, где я пометил места с ошибкой:
class Register(StatesGroup):
name = State()
@dp.message_handler(commands=["start"], state=None)
async def start_mes(message):
await bot.send_message(
chat_id=message.from_user.id,
text=start_var.format(message.from_user) # Вывод сообщения из файла text_var
)
await Register.name.set()
@dp.message_handler(state=Register.name)
async def register_player(message: types.Message, state: FSMContext):
"""
Занесение в БД игрока
"""
data = await state.get_data()
name = data.get("name")
user_id = message.from_user.id
text = db.add_player(user_id=user_id, name=name) # <-----Здесь ошибка
await message.answer(text, reply_markup=menu)
await state.finish()
db.py
def add_player(user_id: int, name: str):
conn = sqlite3.connect('list.db')
c = conn.cursor()
c.execute(f"SELECT name FROM Player WHERE user_id={user_id}")
if c.fetchone() is None:
c.execute('INSERT INTO Player (user_id, name) VALUES (?, ?)',(user_id, name)) # <-----Здесь ошибка
text = f'Добро пожаловать! {name}'
conn.commit()
else:
text = "Вы уже участвовали в этом проэкте,поэтому" \
" у вас есть возможность продолжить"
return text
Как мне решить эту проблему?
