使用 docker 容器在 Heroku 上设置 python teegram bot 脚本后,脚本正在运行,但/start 命令根本不执行任何操作
使用 Python 电报机器人在 Heroku 服务器上设置电报机器人
import logging
import os
import sys
from telegram.ext import Updater, CommandHandler
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',level=logging.INFO)
logger = logging.getLogger()
# Get mode and token from environment
mode = os.getenv("MODE")
TOKEN = os.getenv("TOKEN")
if mode == "prod":
def run(updater):
PORT = int(os.environ.get("PORT", "8443"))
AppName = os.environ.get("AppName")
# Code from https://github.com/python-telegram-bot/python-telegram-bot/wiki/Webhooks#heroku
updater.start_webhook(listen="0.0.0.0",
port=PORT,
url_path=TOKEN)
updater.bot.set_webhook("https://{}.herokuapp.com/{}".format(AppName, TOKEN))
else:
logger.error("No mode specified")
sys.exit(1)
def start(update, context):
logging.info("User started bot {}".format(update.message.from_user.first_name))
context.bot.send_message(chat_id=update.message.chat_id, text="Your name is {}".format(update.message.from_user.first_name))
if __name__ == '__main__':
logger.info("Bot started")
updater = Updater(token=TOKEN, use_context=True)
# ADD dispatcher with command handler
dispatcher = updater.dispatcher
logger.info("working till here")
start_handler = CommandHandler('start', start)
dispatcher.add_handler(start_handler)
logger.info(dispatcher.add_handler(start_handler))
run(updater)
期望/start 命令打印用户名但不起作用
最佳答案
我想知道你为什么不使用通常的 updater.start_polling()
命令来启动机器人轮询过程,这基本上是监听用户消息的过程,我认为这就是你在那里所缺少的
使用 updater.start_polling()
而不是 run(updater)
关于python - 机器人已启动,但/start 命令没有执行任何操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57865167/