Модерация введенных пользователем данных в тг боте aiogram
Пишу тг-бота, возникла надобность реализовать аддминку, где модератор будет принимать или отклонять данные, введенные ранее пользователем. Модерация получилась, но еще ведь нужно уведомить о прохождении модерации юзера - с этим проблема. Айди юзера сохранить не представляется возможным, а значит нельзя отправить сообщение: машина состояний исключена (у меня в коде разветвление - модер пропускает или отклоняет данные), как записать в файл - не знаю, пользователей может быть несколько одновременно и достать из файла нужный айди, видимо, нельзя. Помогите, пожалуйста! Скинул два хэндлера - отправка строки данных юзеру и хэндлер успешного прохождения модерации, где надо отправить сообщение пользователю. Первый:
async def cmd_mod_vlnt_comfirmation(message: types.Message):
await bot.send_message(message.from_user.id, 'Ваши данные отправлены на модерацию. Пожалуйста, ожидайте.')
need_id = message.from_user.id
with open('''C:/Users/vvvpe/Desktop/Connect/Data/vlnt_data.txt''', 'r') as mod_f:
for line in mod_f:
if str(need_id) in line:
cur_mod_data = line
await bot.send_message(айди модератора, cur_mod_data)
Второй:
async def cmd_mod_vlnt_comfirmed(message: types.Message):
await bot.send_message(message.from_user.id, 'Это сообщение админу')
await bot.send_message(message.from_user.id, 'Это сообщение - юзеру, вместо в первый аргумент send_message нужно указать айди пользователя, который непонятно как достать', reply_markup=kb_vlnt_main)
Ответы (1 шт):
Вот примерно так это выглядит
# юзер отправил сообщение
@dp.message_handler()
async def start(message: types.Message):
markup = InlineKeyboardMarkup()
markup.add(InlineKeyboardButton("Принять", callback_data=f"moder:accept@id:{message.from_user.id}"),
InlineKeyboardButton("Отклонить", callback_data=f"moder:decline@id:{message.from_user.id}"))
await bot.send_message(chat_id=admin_id, text=message.text, reply_markup=markup)
@dp.callback_query_handler(text_startswith="moder")
async def moderation(call: types.CallbackQuery):
type_call = call.data.split("@")[0].split(":")[1]
user_id = call.data.split("@")[1].split(":")[1]
if type_call == "accept":
await bot.send_message(user_id, "...")
else:
pass