Telegram-бот не отвечает на командыPython

Программы на Python
Anonymous
Telegram-бот не отвечает на команды

Сообщение Anonymous »

Бот Telegram не отвечает на команды. По логам вебхук устанавливается нормально, бот запускается. Но он полностью игнорирует любые сообщения в боте, ничего не логирует. Можете ли вы помочь мне разобраться, в чем проблема?

импортировать telebot
из telebot.types import InlineKeyboardButton, InlineKeyboardMarkup, CallbackQuery
импортировать журналирование
из datetime import datetime, timezone
из flask import Flask, request, abort

# Включить ведение журнала
logging.basicConfig(
format='%( asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.DEBUG
)
logger = logging.getLogger(__name__)
# Ваш токен
TOKEN = "YOUR_BOT_TOKEN"
# Используйте полный URL-адрес веб-перехватчика, предоставленный Make
WEBHOOK_URL = "YOUR_WEBHOOK_URL"

# Создайте объект бота
bot = telebot.TeleBot(TOKEN)

# Обработчик для команды /start
@bot.message_handler(commands=['start'])
def send_welcome(message):
logger.info(f"Получена команда /start от пользователя {message.from_user.id}")

клавиатура = InlineKeyboardMarkup()
Keyboard.add(InlineKeyboardButton("Выберите время", callback_data='choose_time'))

bot.send_message(
message.chat.id,
"Привет! Этот бот будет отправлять вам слово и его определение один раз в день. Выберите время, когда вам будет удобно его прочитать и запомнить!",
Answer_markup=keyboard
)

# Функция определения часового пояса пользователя
def get_user_timezone(message):
# Получаем время UTC по временной метке сообщения
utc_time = datetime.fromtimestamp(message.date, tz=timezone.utc)

# Определяем смещение от UTC в часах
user_time = utc_time.astimezone()
offset_секунды = user_time.utcoffset().total_секунды()
offset_hours = int(offset_секунды // 3600)

user_timezone = f"UTC{'+' if offset_hours >= 0 else ''}{offset_hours}"
return user_timezone

# Обработчик для встроенных кнопок
@bot.callback_query_handler (func=lambda call: True)
def callback_query(call: CallbackQuery):
logger.info(f"Кнопка нажата с данными обратного вызова: {call.data}")

if call.data == 'choose_time':
Keyboard = InlineKeyboardMarkup()
Keyboard.add(InlineKeyboardButton("Morning", callback_data='morning'))
Keyboard.add(InlineKeyboardButton ("День", callback_data='после полудня'))
Keyboard.add(InlineKeyboardButton("Вечер", callback_data='вечер'))
Keyboard.add(InlineKeyboardButton("Ночь", callback_data=' ночь'))
bot.edit_message_text(
chat_id=call.message.chat.id,
message_id=call.message.message_id,
text="Выберите время суток :",
Answer_markup=keyboard
)

elif call.data в ['утро', 'день', 'вечер', 'ночь']:
times = {
'утро': ["06:00", "07:00", "08:00", "09:00", "10:00", "11:00"], 'день': ["12:00", "13:00", "14:00", "15:00", "16:00", "17:00"],
' вечер': ["18:00", "19:00", "20:00", "21:00", "22:00", "23:00"],
'ночь': [ "00:00", "01:00", "02:00", "03:00", "04:00", "05:00"]
selected_times = times[call .data]
клавиатура = InlineKeyboardMarkup()
для времени в выбранном_времени:
клавиатура.add(InlineKeyboardButton(time, callback_data=f"time_{time}"))
bot. edit_message_text(
chat_id=call.message.chat.id,
message_id=call.message.message_id,
text="Выберите конкретное время:",
Answer_markup=keyboard )

elif call.data.startswith('time_'):
selected_time = call.data.split('_')[1]

# Получить часовой пояс пользователя
user_timezone = get_user_timezone(call.message)

bot.edit_message_text(
chat_id=call.message.chat.id,
message_id =call.message.message_id,
text=f"Вы выбрали время {chosen_time}, {user_timezone}"
)

# Создайте объект Flask
приложение = Flask(__name__)

# Маршрут Flask для обработки веб-перехватчиков
@app.route("/", методы=['POST'])
def webhook(): logger.info("Получен запрос веб-перехватчика к приложению Flask")
logger.info(f"Headers: {request.headers}")

if request.headers.get ('content-type') == 'application/json':
json_string = request.get_data().decode('utf-8')
logger.debug(f"Получена строка JSON: { json_string}")
update = telebot.types.Update.de_json(json_string)
logger.debug(f"Обновить объект: {update}")
bot.process_new_updates([update])
logger.info("Обновление успешно обработано приложением Flask")
return 'OK', 200
else:
logger.warning("Приложение Flask получило неверный запрос")
abort(400)

# Установите вебхук при запуске приложения
if __name__ == '__main__':
bot.remove_webhook()
bot .set_webhook(url=WEBHOOK_URL)
webhook_info = bot.get_webhook_info()
logger.info(f"Информация о веб-перехватчике: {webhook_info}")

logger.info("Webhook набор. Бот запущен.")
app.run(host='0.0.0.0', port=8443)



Подробнее здесь: https://stackoverflow.com/questions/790 ... o-commands

Вернуться в «Python»