Ответ на сообщения БОТ
Боту отправлю сообщение "номера телефона". Сохраняю ID сообщения в глобальную переменную. Ответ от бота приходит с кнопками Inline(Новый номер? Да НЕТ). Если нажимаю "ДА". То бот отправляет еще одно сообщение Регистрация прошла? и кнопка Inline ("Готов"). после нажатия на кнопку готов, бот сообщает что Номер телефона который был в первом сообщении ЗАРЕГИТСРОВАН. Всё отлично работает, до тех пор пока между сообщения не появляется еще обдно с номером телефона. И тогда ID сообщения1 затирается ID сообщением2 , т.к. переменная глобальная. Вопрос как разделить реакции на эти два сообщения? Может делать список, где храниться ID сообщений? Подскажите чтоб не городить костыли.
#! /usr/bin/env python
import logging
import config
import re
from aiogram import Bot, Dispatcher, executor, types
from aiogram.types import ReplyKeyboardRemove, ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton
API_TOKEN = config.TelegramAPI
# Configure logging
logging.basicConfig(level=logging.INFO)
# Initialize bot and dispatcher
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
buttons = [
types.InlineKeyboardButton(text="Да", callback_data="yes"),
types.InlineKeyboardButton(text="Нет", callback_data="no"),
]
button2 = [types.InlineKeyboardButton(text="Готов", callback_data="finish")]
inline_kb_full = types.InlineKeyboardMarkup(row_width=2)
inline_kb_full.add(*buttons)
inline_kb_ok = types.InlineKeyboardMarkup(row_width=2)
inline_kb_ok.add(*button2)
tel = ''
global id_mes
regexp_tel = '^(\+7|7|8)?[\s\-]?\(?[489][0-9]{2}\)?[\s\-]?[0-9]{3}[\s\-]?[0-9]{2}[\s\-]?[0-9]{2}'
@dp.message_handler(commands=['start', 'help'])
async def send_welcome(message: types.Message):
await message.reply("Привет!\nЭто бот!\n Скоро я буду работать.")
@dp.message_handler(regexp=regexp_tel)
async def driver_new(message: types.Message):
global tel
global id_mes
id_mes = message.message_id
tel = re.match(regexp_tel, message.text).group(0)
await message.answer(f"{tel} Это новый номер?", reply_markup=inline_kb_full)
@dp.callback_query_handler(lambda c: c.data == 'finish')
async def about_bot_message(call: types.CallbackQuery):
await bot.answer_callback_query(call.id)
await call.message.delete()
await bot.send_message(call.message.chat['id'], f'Номер {tel}\n<b>Зарегистрирован!</b>', parse_mode="HTML", reply_to_message_id=id_mes)
@dp.callback_query_handler(lambda c: c.data == 'yes')
async def yes_bot_message(call: types.CallbackQuery):
await bot.answer_callback_query(call.id)
await bot.send_message(call.message.chat['id'], f"Отлично", reply_markup=inline_kb_ok)
await call.message.delete()
@dp.callback_query_handler(lambda c: c.data == 'no')
async def no_bot_message(call: types.CallbackQuery):
await bot.answer_callback_query(call.id)
await call.message.delete()
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)