首页 > 解决方案 > 机器人回复时没有通知

问题描述

我写了一个简单的电报机器人,它从发送给它的消息中读取链接并回复一些信息。

用例如下:我正在 Safari 中查看某个页面,然后单击share并将 URL 发送给机器人。

在这一点上,我希望看到带有信息的推送通知,但电报图标旁边出现了带有数字 1 的 onlu 徽章。

我正在使用 Python3.9 的常规 python-telegram-bot 库并使用 update.message.reply_text 回复消息

这是一个完整的代码:

import os
import re

from telegram import Update
from telegram.ext import Updater, MessageHandler, CallbackContext, CommandHandler
from telegram.ext.filters import Filters

TELEGRAM_API_KEY = os.getenv("TELEGRAM_API_KEY")
EXTERNAL_URL = os.getenv("EXTERNAL_URL")


def start_command_handler(update: Update, context: CallbackContext) -> None:
    update.message.reply_text(f'Hello {update.effective_user.first_name}')


def message_handler(update: Update, context: CallbackContext) -> None:
    exp = re.compile('https://example.com/(\d{7,})/\w+', re.IGNORECASE)

    m = exp.match(update.message.text)
    if m is None:
        update.message.reply_text(f'Unable to recognize a link')
        return

    lines = ["here is your result:"]

    # some magic here

    update.message.reply_html('\n'.join(lines))


def main():
    u = Updater(TELEGRAM_API_KEY)
    u.dispatcher.add_handler(CommandHandler('start', start_command_handler))
    u.dispatcher.add_handler(MessageHandler(Filters.text & Filters.chat_type.private, message_handler))

    u.start_webhook(listen='0.0.0.0', port=80, webhook_url=EXTERNAL_URL)
    u.idle()


if __name__ == '__main__':
    main()

标签: pythonbotstelegram

解决方案


推荐阅读