@dp.message have no attribute "nick"
Написал для бота телеграмм функцию для присваивания пользователю титула (ника), используя автоматы состояний. код следующий
class give_nick(StatesGroup): #создаем класс состояний
nick = State()
@dp.message(Command('givenick'))
async def give_nick(message: Message, state: FSMContext):
if not (await base_func.is_admin(message, True)): #здесь проверяем пользователя юзаещего команду на админку
await message.reply(msg_errors.bot_not_have_permissions)
return 0
if not (await base_func.is_admin(message)):
await message.reply(msg_errors.no_permission)
return 0
error = await base_func.check_command(message, "mute")
if error:
await message.reply(id=message.chat.id, text=error)
return 0
await state.set_state(give_nick.nick) #переключаем состояние
iddd = message.reply_to_message.from_user.id
global fn_n
fn_n = message.reply_to_message.from_user.first_name
await message.answer(f"Какой титул дать {iddd}?")
@dp.message(give_nick.nick) #а тут получаем ошибку о том, что @dp.message() не имеет аргумента nick
async def prisvo(message: Message, state: FSMContext):
await state.update_data(nick=message.text)
con = sqlite3.connect("database/database.db")
cur = con.cursor()
have_nick = cur.execute(f"select nickname from nickname where tg_id = {idd}")
have_nick = cur.fetchone()
have_nick = have_nick[0]
con.commit()
con.close()
if have_nick == None:
con = sqlite3.connect("database/database.db")
cur = con.cursor()
cur.execute(f"insert into nickname (tg_id, nickname) values (?,?)", (idd, message.text))
con.commit()
con.close()
await message.answer(f"Теперь у {fn_n} есть титул {message.text}")
else:
con = sqlite3.connect("database/database.db")
cur = con.cursor()
cur.execute(f"update nickname set nickname = {message.text}")
con.commit()
con.close()
await message.answer(f"Теперь у {fn_n} есть титул {message.text}")
` в итоге получаем ошибку о том, что у @dp.message нет аргумента .nick. при этом в этом же боте написал команду для вывода погоды, так же с использованием FSM, так же с одним состоянием, и все работает отлично(код ниже)
@dp.message(Command("weather"))
async def townnn(message: Message, state: FSMContext):
await state.set_state(Town.town)
await message.answer(f"{message.from_user.first_name}, введи город")
@dp.message(Town.town)
async def townn(message: Message, state: FSMContext):
await state.update_data(town = message.text)
owm = pyowm.OWM("062c637c640ac6e8a41529c2e9318c26")
mgr = owm.weather_manager()
observation = mgr.weather_at_place(f"{message.text}")
w = observation.weather
print(w.clouds)
temp_dict_celsius = w.temperature('celsius')
print(temp_dict_celsius)
tempo = temp_dict_celsius["temp_min"]
tempo = round(tempo)
print(tempo)
await message.answer(f"{message.text}:\nТемпература: {tempo}\nОблачность: {w.clouds}\nСтатус: {w.status}")
вопрос, следовательно такой: почему не работает и как исправить?