Телеграмм бот не видит стейты и не отправляет сообщение пользователя в админ чат
Этот файл с кодом находится в папке хендлерс , тут я генерирую кнопку 'оплатил' с id пользователя и после этого обрабатываю эту кнопку
from aiogram import Bot, types
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters import Text
from utils.states import Form, AdminReplyState
from config_reader import config
bot = Bot(config.bot_token.get_secret_value())
def generate_links_kb(user_id):
return InlineKeyboardMarkup(
inline_keyboard=[
[InlineKeyboardButton(text='Оплатил', callback_data=f"reply_{user_id}")]
]
)
@router.callback_query(F.data.startswith("reply_"))
async def process_reply_callback(callback_query: CallbackQuery, state: FSMContext):
user_id = callback_query.data.split("_")[1]
await state.update_data(reply_to_user_id=user_id)
await state.set_state(Form.txt)
await bot.send_message(chat_id=user_id, text="Введите ответ пользователю:")
@router.message(Form.txt)
async def send_reply_to_user(message: Message, state: FSMContext):
data = await state.get_data()
user_id = data['reply_to_user_id']
await bot.send_message(chat_id=config.ADMIN_CHAT_ID, text=f"Ответ от админа: {message.text}")
await bot.send_message(chat_id=user_id, text="Ответ успешно отправлен.")
await state.clear()
Дальше код, где я вызываю кнопку 'оплатил':
@router.message()
async def echo(message: Message):
msg = message.text.lower()
if msg == '⚡️combo5v1':
await message.answer_photo(photo='https://cdn.discordapp.com/attachments/925457326830395442/1257419667824447578/51.jpg?ex=668456d2&is=66830552&hm=81b6b7bdbefc3d9fe319c59cda6d38c8acde88528e2a1957b0bc14e723e0b654&')
await message.answer('Не упусти возможность начать свою трансформацию прямо сейчас. Реквизит для оплаты РФ:', reply_markup=generate_links_kb(message.from_user.id))
elif msg == 'тариф2':
await message.answer_photo(photo='https://cdn.discordapp.com/attachments/925457326830395442/1257422634619240478/2.jpg?ex=66845995&is=66830815&hm=13f611143944a745d0ec1acae63ef73c26d007ac7f2bc29317b68270e6ab1175&')
await message.answer('Не упусти возможность начать свою трансформацию прямо сейчас. Реквизит для оплаты РФ', reply_markup=generate_links_kb(message.from_user.id))
elif msg == 'тариф3':
await message.answer_photo(photo='https://cdn.discordapp.com/attachments/925457326830395442/1257422658526773258/3.jpg?ex=6684599b&is=6683081b&hm=10dafe2495bc2ba7201e00779ded2066908e723174503121a92465250a06d573&')
await message.answer('Не упусти возможность начать свою трансформацию прямо сейчас.', reply_markup=generate_links_kb(message.from_user.id))
elif msg == 'тариф4':
await message.answer_photo(photo='https://cdn.discordapp.com/attachments/925457326830395442/1257422681314430996/4.jpg?ex=668459a1&is=66830821&hm=216cc412fa6df6c3bef2a189caedc2ee2464af27680878c188e51543be521a04&')
await message.answer('Не упусти возможность начать свою трансформацию прямо сейчас. Реквизит для оплаты', reply_markup=generate_links_kb(message.from_user.id))
Все останавливается на том , как после нажатия кнопки 'оплатил' бот просит пользователя ввести данные . После введения данных они не отправляются в админ чат
Ответы (1 шт):
Автор решения: Samikague
→ Ссылка
В функции send_reply_to_user вы забыли обновить data.
В начале функции пропишите
await state.update_data(txt=message.text)