使用 Python 和 Telegram 创建机器人

使用 Python 和 Telegram 创建机器人

像 Telegram 这样的消息传递应用程序提供 API 以便我们创建机器人的情况并不少见。这种类型的机器人很容易编写,而且用途广泛。机器人是与在您的家庭服务器上运行的应用程序进行交互的好方法,无需将其直接暴露在互联网上。

观察网站上的变化

最近我要申请签证,要预约你需要去政府网站,不断检查是否有新的名额。而且您需要快速,因为免费位置不会持续很长时间。

所以我决定编写一个机器人,它每 10 分钟浏览一次表单,并在状态发生变化时立即在 Telegram 上向我发送一条消息。 bot 有两部分,第一部分是与 selenium webdriver 交互的代码,第二部分是通过 Telegram 提醒变化。

一、下载一个浏览器驱动 这里

然后我使用了一个名为 碎片 ,抽象了与驱动程序的交互。

 从碎片导入浏览器 使用 Browser() 作为浏览器:  
 # 访问网址。  
 browser.visit("http://www.google.com") # 查找并填写搜索表。  
 browser.find_by_name('q').fill('splinter') # 查找并单击“搜索”按钮。  
 button = browser.find_by_name('btnK').click() # 在页面上检查结果。  
 如果 browser.is_text_present('splinter.readthedocs.io'):  
 print("是的,官网找到了!")  
 别的:  
 print("不,没有找到...")

要运行代码,首先启动您在第一步下载的驱动程序,然后运行 ​​python 应用程序。

使用电报发送警报

现在我们有了一个在网站上查找更改的脚本,我们需要一种发送通知的方法。要创建 Telegram 机器人,首先您需要一个令牌,并且只需向 BotFather 索取令牌即可。

向机器人发送命令 /新机器人 ,机器人会要求你命名你的机器人,然后它会为你提供令牌。

在这里我把 蟒蛇电报机器人 类中的库只是为了在需要时更容易更改为另一个解决方案,但您可以跳过此并直接使用该库。

 进口电报  
 电报类: def __init__(self, token: str):  
 self.bot = telegram.Bot(token=token)  
 self.offset = 0  
 def 发送(自我,chat_id,消息):  
 self.bot.send_message(chat_id=chat_id, text=message)

找出chat_id

  1. 将 Telegram BOT 添加到组中。
  2. 获取 BOT 的更新列表:
[ https://api.telegram.org/bot](https://api.telegram.org/bot) <BOT_TOKEN>/getUpdates

例子:

[ https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates](https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates)

3. 寻找“聊天”对象:

 {  
 “update_id”:8393,  
 “信息”: {  
 "message_id": 3,  
 “从”: {  
 “身份证”:7474,  
 “名字”:“AAA”  
 },  
 “聊天”: {  
 “ID”:<CHAT_ID> ,  
 “标题”:””  
 },  
 “日期”:25497,  
 “new_chat_participant”:{  
 “身份证”:71,  
 "first_name":"姓名",  
 "用户名":"YOUR_BOT_NAME"  
 }  
 }  
 }

与您的树莓派项目交互

由于您可以使用机器人发送消息,因此您也可以接收消息。这为您的周末项目打开了广泛的可能性。使用电报作为与您的应用程序通信的桥梁,您无需将它们直接公开到互联网,或处理端口转发和 IP 更改,或动态 DNS 配置。

前不久写了一个听命令的小bot /乐透。 然后机器人回复随机生成的彩票号码。所以我让机器人在一个 docker 容器上运行,我可以用我的手机与它进行交互。

结论

编写机器人很有趣,你可以用它做各种各样的事情。这里我以 Telegram 为例,但过去我也使用 Slack bot API 与房屋报警系统进行交互。我希望这能提供信息,如果您构建了一个很酷的机器人,请与我分享。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/36104/45511408

posted @ 2022-09-14 08:47  哈哈哈来了啊啊啊  阅读(326)  评论(0编辑  收藏  举报