使用 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
- 将 Telegram BOT 添加到组中。
- 获取 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 版权协议,转载请附上原文出处链接和本声明