1个不稳定版本
使用旧的Rust 2015
0.1.0 | 2018年5月20日 |
---|
#30 in #chat-bot
275KB
5.5K SLoC
Telegram事件机器人
此机器人用于管理在Telegram上连接的聊天中的社交活动
用法
您可以在Telegram上与这个机器人交谈,以将其添加到您的聊天中。机器人可在t.me/coconuts_event_bot找到。
如果您是聊天管理员,并希望使用此机器人,可以按照以下步骤操作。
- 创建一个机器人可以宣布事件的频道。将此机器人添加为频道管理员。
- 在您的频道中,发出
/init
命令。这将告诉机器人您希望它跟踪您的频道。 - 将机器人添加为聊天管理员。这样,机器人可以跟踪谁在聊天中,并且只允许聊天中的用户添加/修改/删除事件。
- 获取聊天ID。您可以通过在聊天中发出
/id
命令来完成此操作。 - 在您的频道中,发出
/link id
命令,其中id
是您在上一步中获得的聊天ID。这将告诉机器人聊天中的用户可以为此频道创建事件。
注意事项:此机器人仅在超级群组中工作,不在常规群组中工作。请在使用此机器人之前将您的群组升级为超级群组。
如果您在已使用此机器人的聊天中,可以按照以下步骤创建活动
- 在群聊中发送消息(如果您尚未这样做)。事件机器人使用消息来确定谁在聊天中,因为Telegram没有提供暴露此信息的API。
- 与机器人开启私密聊天,并发出
/new
命令。机器人会询问您希望为哪个与您的聊天关联的频道创建活动。 - 选择您希望创建活动的频道,机器人将生成一个用于创建事件的网页表单的一次性使用链接。
- 使用该链接创建活动。
可用命令
对于管理员:
/init - Initialize an event channel
/link - link a group chat with an event channel (usage: /link [chat_id])
/id - get the id of a group chat
对于用户:
In group chats:
/events - get a list of events for the current chat
/pinevents - pin a list of upcomming events in the current group
In private chats:
/new - Create a new event
/edit - Edit an event you're hosting
/delete - Delete an event you're hosting
/help - Print the help message
开发
如果您想帮助开发这个机器人,您需要了解它是如何工作的。这个机器人由Postgres数据库支持,并使用tokio-postgres
crate进行数据库交互,但它使用diesel_cli
应用程序来管理迁移。您需要通过diesel安装cargo install diesel_cli
,然后通过diesel运行迁移以设置开发环境。
此机器人使用dotenv帮助管理环境变量。已经提供了一个示例.env
文件作为.env.sample
。将此文件复制到.env
,然后设置适合您设置的变量。这意味着您需要一个具有事件表的Postgres数据库。
# .env.sample
# The following variables are used by telegram-event-bot
DB_HOST="localhost"
DB_PORT="5432"
DB_USER="events"
DB_PASS="events"
DB_NAME="events"
TEST_DB_NAME="events_test"
EVENT_URL="localhost:8000"
TELEGRAM_BOT_TOKEN="your bot token"
# This variable is used by diesel_cli
DATABASE_URL="postgres://events:events@localhost:5432/events"
应用程序分为三个部分,在src/model
中的模型,在src/actors
中的操作者,以及main.rs
文件。模型定义了执行数据库查询的函数,操作者管理应用程序状态并持有应用程序逻辑,而主文件使用所需参数启动操作者。
目前有5个操作者组成此应用程序。
- DbBroker,管理数据库连接的访问
- EventActor,处理与Web UI的交互
- TelegramActor,从Telegram接收更新并向Telegram发送消息
- Timer,管理在事件即将开始、开始和结束时发出通知
- UsersActor,是用户、聊天和频道之间有用关系的内存缓存
模型有6个有用的模块
- chat,处理与聊天表交互
- chat_system,处理与chat_systems表的交互。该表知道与一组聊天关联的频道
- edit_event_link,存储用于编辑事件的单次使用链接。这会与edit_event_links表交互
- event,存储有关已创建事件的信息。这会与events表交互
- new_event_link,存储用于创建事件的单次使用链接。这会与new_event_links表交互
- user,与users表交互。这用于跟踪哪些用户在哪些聊天中
此外,在此存储库中有一个crate专门用于处理Web UI。该crate创建了一系列操作者来处理Web请求,并使用用户提供的信息与EventActor通信。
贡献
您可以自由地打开任何您发现问题的issue。请注意,任何贡献的代码都将根据GPLv3许可证授权。
许可证
版权所有 © 2018 Riley Trautman
Telegram Event Bot是免费软件:您可以根据自由软件基金会发布的GNU通用公共许可证的条款重新分配和/或修改它,许可证版本为3,或(根据您的选择)许可证的任何较新版本。
Telegram Event Bot根据GNU通用公共许可证的分发,希望它会很有用,但没有任何保证;甚至没有关于适销性或适用于特定目的的隐含保证。有关更多信息,请参阅GNU通用公共许可证。此文件是Telegram Event Bot的一部分。
您应已收到GNU通用公共许可证副本与Telegram Event Bot一起。如果没有,请参阅http://www.gnu.org/licenses/。
依赖项
~30–43MB
~697K SLoC