网站首页 > 技术文章 正文
像 Telegram 这样的消息传递应用程序提供 API 以便我们创建机器人的情况并不少见。 这种类型的机器人很容易编写,而且用途广泛。 机器人是与在您的家庭服务器上运行的应用程序进行交互的好方法,无需将其直接暴露在互联网上。
观察网站上的变化
最近我要申请签证,要预约你需要去政府网站,不断检查是否有新的名额。 而且您需要快速,因为免费位置不会持续很长时间。
所以我决定编写一个机器人,它每 10 分钟浏览一次表单,并在状态发生变化时立即在 Telegram 上向我发送一条消息。 bot 有两部分,第一部分是与 selenium webdriver 交互的代码,第二部分是通过 Telegram 提醒变化。
首先,下载一个浏览器驱动:
然后我使用了一个名为 Splinter 的库,它抽象了与驱动程序的交互。
from splinter import Browserwith Browser() as browser:
# Visit URL.
browser.visit("http://www.google.com") # Find and fill out the search form.
browser.find_by_name('q').fill('splinter') # Find and click the 'search' button.
button = browser.find_by_name('btnK').click() # Check for result on the page.
if browser.is_text_present('splinter.readthedocs.io'):
print("Yes, the official website was found!")
else:
print("No, it wasn't found...")
要运行代码,首先启动您在第一步下载的驱动程序,然后运行 python 应用程序。
使用电报发送警报
现在我们有了一个在网站上查找更改的脚本,我们需要一种发送通知的方法。 要创建 Telegram 机器人,首先您需要一个令牌,并且只需向 BotFather 索取令牌即可。
向机器人发送命令 /newbot,机器人会要求您为机器人命名,然后它会为您提供令牌。
在这里,我将 python-telegram-bot 库包装在一个类中,以便在需要时更容易更改为另一个解决方案,但您可以跳过此并直接使用该库。
import telegram
class Telegram: def __init__(self, token: str):
self.bot = telegram.Bot(token=token)
self.offset = 0
def send(self, chat_id, message):
self.bot.send_message(chat_id=chat_id, text=message)
找出chat_id
- 将 Telegram BOT 添加到组中。
- 获取 BOT 的更新列表:
https://api.telegram.org/bot<BOT_TOKEN>/getUpdates
例子:
https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates
3. 寻找“聊天”对象:
{
"update_id": 8393,
"message": {
"message_id": 3,
"from": {
"id":7474,
"first_name":"AAA"
},
"chat": {
"id":<CHAT_ID>,
"title":""
},
"date":25497,
"new_chat_participant": {
"id":71,
"first_name":"NAME",
"username":"YOUR_BOT_NAME"
}
}
}
与您的树莓派项目交互
由于您可以使用机器人发送消息,因此您也可以接收消息。 这为您的周末项目打开了广泛的可能性。 使用电报作为与您的应用程序通信的桥梁,您无需将它们直接公开到互联网,或处理端口转发和 IP 更改,或动态 DNS 配置。
不久前,我写了一个小机器人,它听命令 /lotto。机器人然后回复一个随机生成的彩票号码。 所以我让机器人在一个 docker 容器上运行,我可以用我的手机与它进行交互。
结论
编写机器人很有趣,你可以用它做各种各样的事情。 这里我以 Telegram 为例,但过去我也使用 Slack bot API 与房屋报警系统进行交互。 我希望这能提供信息,如果您构建了一个很酷的机器人,请与我分享。
关注七爪网,获取更多APP/小程序/网站源码资源!
- 上一篇: 用Python写了一个微信聊天机器人
- 下一篇: Python机器人编程初体验
猜你喜欢
- 2025-01-20 Python快速入门系列:PyQt5 深入理解信号与槽机制
- 2025-01-20 牛掰!Python炫技—— 企业微信机器人每天定时发消息实例
- 2025-01-20 阿愚呱呱RPA:RPA 机器人,找人定制一个还自己来组装
- 2025-01-20 微信群总是有人发广告?看我用Python写一个机器人消灭他
- 2025-01-20 博普乐 Popular Robotics | 机器人AI在线课程Python+树莓派
- 2025-01-20 Python机器人编程主控板microbit简介
- 2025-01-20 小试牛刀 自己建立一个AI聊天机器人
- 2025-01-20 python脚本实现钉钉机器人发送消息
- 2025-01-20 Python机器人教学——控制数码管显示字符
- 2025-01-20 大疆推出首款教育机器人,可编程支持竞速对战
- 258℃Python短文,Python中的嵌套条件语句(六)
- 258℃python笔记:for循环嵌套。end=""的作用,图形打印
- 257℃PythonNet:实现Python与.Net代码相互调用!
- 252℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 107℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 83℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)