在将我的机器人移动到新服务器后,我遇到了以下问题。我使用webhook来获取更新,但现在机器人无法从电报服务器获取它们。我试图从删除服务器发送带有curl的POST请求,机器人以正常的方式处理它。我用getWebhookInfo检查了webhook,它返回了一个对象,其中的url和pending_update_count等于74,没有错误。我猜,这意味着出于某种原因,电报服务器无法向我的主机发送POST请求。
我的服务器的操作系统是Arch Linux。
我使用pyTelegramBotAP。
CONFIG = ConfigParser()
CONFIG.read(os.path.join('data', 'config.ini'))
# webhook url
URL_BASE = "https://{}:{}".format(CONFIG['server']['ip'], CONFIG.getint('server', 'port'))
URL_PATH = "/{}/".format(CONFIG['telegram bot']['token'])
BOT = telebot.TeleBot(CONFIG['telegram bot']['token'])
# server that will listen for new messages
APP = web.Application()
URL = URL_BASE + URL_PATH
BOT.set_webhook(url=URL, certificate=open(CONFIG['ssl']['certificate'], 'rb'))
# Build ssl context
CONTEXT = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
CONTEXT.load_cert_chain(CONFIG['ssl']['certificate'], CONFIG['ssl']['private key'])
# Start aiohttp server
web.run_app(
APP,
host=CONFIG['server']['listen'],
port=CONFIG['server']['port'],
ssl_context=CONTEXT,
)
求求你救命!
发布于 2018-07-01 11:49:31
Telegram webhook只与https端点通信,所以我建议检查您的服务器是否有https连接。
此外,getWebhookInfo调用返回一个状态对象,其中包含端点的最新错误信息。查看一下该错误信息,可能会找到确切的问题。
发布于 2018-06-29 20:30:19
请检查您的服务器上的防火墙,您的服务器上的防火墙很可能没有向您的应用程序传递消息。
发布于 2018-06-30 00:46:06
要检查防火墙状态,请运行$ ufw status
请向您展示无真实IP的URL_BASE。
您的服务器上安装的是什么操作系统?
您将测试请求从CURL发送到电报的URL还是服务器的URL?
如果你运行简单的应用程序,你能从你的服务器得到响应吗?
示例:
from aiohttp import web
async def hello(request):
return web.Response(text='Hello world!')
app = web.Application()
app.add_routes([web.get('/', hello)])
web.run_app(app, host='localhost', port=3003)
检查响应:
$ curl localhost:3003
Hello world!
请提供有关如何进行故障排除的更详细信息。
https://stackoverflow.com/questions/51108826
复制