Почему телеграм бот не запускается, когда вебхук выполнен успешно?

Ссылка скопирована
1 ответ

Разрабатываю Telegram-бота c помощью Serverless по видео и документации от Yandex Cloud.
Видео вместе с документацией по которой я делаю бота: https://cloud.yandex.ru/ru/docs/api-gateway/tutori...
Я повторял за чуваком в видео и сделал почти тоже самое параллельно читая документацию к данному видео, но на предпоследнем пункте: 7. Настройте связь между функцией и Telegram-ботом. Вот.
Как только я сделал вебхук и получил ответ: {"ok":true,"result":true,"description":"Webhook was set"} Всё. Наш бот уже по сути должен быть доступен и работать, но бот не отвечает в телеграмм! Как будто зря было проделанно столько работы ¯_(ツ)_/¯

Дополнительно:

Логи функции смотрели?
Без кода сложно что-то подсказать.

  • Константин Нагибович, код лежит в инфраструктуре. Вроде никаких ошибок нет. Вебхук запускаю через повершел с домашнего компа и пишет что успешно, но тг бот так и не заработал
  • muhammad271, логи функции смотрели? В настройках функции включили опцию "публичная функция"?
  • Константин Нагибович, Включил. Я в точности как на видео повторял, просто где то что то своё название и токен вставлял. В основном это копипаст)))
  • muhammad271, код вашей функции можете показать? Логи функции посмотрели? Логи шлюза смотрели?
  • index.js:

    const { Telegraf } = require('telegraf');

    const bot = new Telegraf(process.env.BOT_TOKEN);
    bot.start((ctx) => ctx.reply(`Hello. nMy name Serverless Hello Telegram Bot nI'm working on Cloud Function in the Yandex Cloud.`))
    bot.help((ctx) => ctx.reply(`Hello, ${ctx.message.from.username}.nI can say Hello and nothing more`))
    bot.on('text', (ctx) => {
    ctx.replyWithPhoto({url: '<домен_API-шлюза>/sayhello.png'});
    ctx.reply(`Hello, ${ctx.message.from.username}`);

    });

    module.exports.handler = async function (event, context) {
    const message = JSON.parse(event.body);
    await bot.handleUpdate(message);
    return {
    statusCode: 200,
    body: '',
    };
    };

    package.json:

    {
    "name": "ycf-telegram-example",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
    },
    "author": "",
    "license": "MIT",
    "dependencies": {
    "telegraf": "^4.12.0"
    }
    }

    Почему телеграм бот не запускается, когда вебхук выполнен успешно?

  • muhammad271, точку входа, токен и тд и тп указал чуть ниже там есть куда вставить. В общем всё вроде правильно. Вот сейчас тоже вебхук успешно в cmd, но тг бот не отвечает:

    Почему телеграм бот не запускается, когда вебхук выполнен успешно?

    Смотрите документацию...
    По шаблону:
    curl ^
    --request POST ^
    --url https://api.telegram.org/bot<токен_бота>/setWebhook ^
    --header "content-type: application/json" ^
    --data "{"url": "<домен_API-шлюза>/fshtb-function"}"

  • Константин Нагибович, только внимание обратил когда запустил снова вебхук на логи:

    Почему телеграм бот не запускается, когда вебхук выполнен успешно?

  • Константин Нагибович, Всё решил вопрос! Там проблема связана с неправильной конфигурацией или обращением к API шлюза. И да, модуль 'fs/promises' не может быть найден. Вероятно, это происходит из-за того, что ваша среда выполнения не поддерживает модуль 'fs/promises'. В общем поставил последнюю версия node js
    Спасибо!!!
  • muhammad271, пожалуйста. Поверьте моему опыту работы с ботами - логирование имеет важное значение при разработке и дальнейшем функционировании ботов. Успехов!
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Дмитрий К. Ответ

    Существует несколько возможных причин, по которым телеграм бот не запускается, даже если вебхук был успешно выполнен. Давайте рассмотрим некоторые из них:

    1. **Проверьте URL вебхука**: Убедитесь, что URL, который вы указали в качестве вебхука для вашего телеграм бота, действителен и доступен. Проверьте, что вы используете правильный протокол (HTTP или HTTPS) и правильный домен.

    2. **Проверьте настройки бота**: Убедитесь, что вы правильно настроили своего телеграм бота. Проверьте токен бота и убедитесь, что он правильно указан в вашем коде.

    3. **Проверьте код бота**: Проверьте ваш код на наличие ошибок. Убедитесь, что вы правильно настроили обработчики событий и что ваш бот может отвечать на входящие запросы.

    Вот пример кода на PHP, который показывает, как можно настроить телеграм бота с использованием вебхука:

     

    Если после проверки всех этих аспектов ваш телеграм бот по-прежнему не запускается, рекомендуется обратиться к документации телеграм API или обратиться за помощью к сообществу разработчиков.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно