я пытаюсь создать телеграм бота, но у меня не получается, и ошибку найти не могу, не реагирует после отправки 1 сообщения
from aiogram import Bot, Dispatcher, types
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters import Command
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton, ReplyKeyboardRemove
from aiogram.contrib.fsm_storage.memory import MemoryStorage
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
logging.getLogger("telegram").setLevel(logging.ERROR)
TOKEN = "мой токен"
ADMIN_CHAT_ID = '-4145205167' # Замените на ID вашей группы администрации
bot = Bot(token=TOKEN)
dp = Dispatcher(bot, storage=MemoryStorage()) # Добавьте хранилище
subscribers = set()
class Form(StatesGroup): # Определение класса состояния
phone = State()
name = State()
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
user_id = message.from_user.id
await bot.send_message(chat_id=user_id, text="Добро пожаловать в кинотеатр 'Портал'! Пожалуйста, выберите один из вариантов ниже:")
def create_keyboard(user_id):
keyboard = ReplyKeyboardMarkup(resize_keyboard=True)
if user_id in subscribers:
# Если пользователь подписан, показываем все кнопки
button1 = KeyboardButton("Как вернуть билет?")
button2 = KeyboardButton("Расписание сеансов")
button3 = KeyboardButton("Купить билет онлайн")
button4 = KeyboardButton("Не удается купить билет онлайн")
button5 = KeyboardButton("Контактный номер и режим работы")
button6 = KeyboardButton("Забронировать столик")
keyboard.add(button1, button6)
keyboard.add(button2, button3)
keyboard.add(button4, button5)
return keyboard
@dp.message_handler()
async def handle_text(message: types.Message):
text = message.text
user_id = message.from_user.id
if text == "Забронировать столик":
await bot.send_message(chat_id=user_id, text="Для бронирования столика, введите ваш номер телефона, пожалуйста.")
await Form.phone.set()
@dp.message_handler(state=Form.phone)
async def save_phone(message: types.Message, state: FSMContext):
user_id = message.from_user.id
async with state.proxy() as data:
data['phone'] = message.text
await bot.send_message(chat_id=user_id, text="Теперь введите, как к вам обращаться.")
await Form.name.set()
@dp.message_handler(state=Form.name)
async def save_name(message: types.Message, state: FSMContext):
name = message.text
async with state.proxy() as data:
phone = data.get('phone')
if phone:
await bot.send_message(chat_id=ADMIN_CHAT_ID, text=f"Новое бронирование столика:\nИмя: {name}\nТелефон: {phone}")
await bot.send_message(chat_id=message.chat.id,
text="Спасибо за бронирование! Наша администрация свяжется с вами в ближайшее время.",
reply_markup=ReplyKeyboardRemove())
await state.finish()
else:
await bot.send_message(chat_id=message.chat.id, text="Извините, произошла ошибка. Пожалуйста, попробуйте еще раз.")
await Form.phone.set()
if __name__ == '__main__':
from aiogram import executor
executor.start_polling(dp, skip_updates=True)```
Ответы (1 шт):
Автор решения: Djo ny
→ Ссылка
Замени свой код:
user_id = message.from_user.id
На следующий:
chat_id = message.chat.id
Таким образом вы будете получать именно айди чата, а не пользователя