我写了一个简单的电报机器人,它读取发送给它的消息中的链接并回复一些信息。
用例如下:我正在 Safari 中查看某个页面,然后单击 share
并向机器人发送一个 URL。
此时我希望看到带有信息的推送通知,但在 Telegram 图标旁边显示了带有数字 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()