#chat-bot #events #telegram-bot #bot #telegram

应用 event-bot

一个用于管理基于时间的Telegram事件机器人

1个不稳定版本

使用旧的Rust 2015

0.1.0 2018年5月20日

#30 in #chat-bot

GPL-3.0AGPL-3.0

275KB
5.5K SLoC

Telegram事件机器人

此机器人用于管理在Telegram上连接的聊天中的社交活动

event creation request event creation form

用法

您可以在Telegram上与这个机器人交谈,以将其添加到您的聊天中。机器人可在t.me/coconuts_event_bot找到。

如果您是聊天管理员,并希望使用此机器人,可以按照以下步骤操作。

  1. 创建一个机器人可以宣布事件的频道。将此机器人添加为频道管理员。
  2. 在您的频道中,发出/init命令。这将告诉机器人您希望它跟踪您的频道。
  3. 将机器人添加为聊天管理员。这样,机器人可以跟踪谁在聊天中,并且只允许聊天中的用户添加/修改/删除事件。
  4. 获取聊天ID。您可以通过在聊天中发出/id命令来完成此操作。
  5. 在您的频道中,发出/link id命令,其中id是您在上一步中获得的聊天ID。这将告诉机器人聊天中的用户可以为此频道创建事件。

注意事项:此机器人仅在超级群组中工作,不在常规群组中工作。请在使用此机器人之前将您的群组升级为超级群组。

如果您在已使用此机器人的聊天中,可以按照以下步骤创建活动

  1. 在群聊中发送消息(如果您尚未这样做)。事件机器人使用消息来确定谁在聊天中,因为Telegram没有提供暴露此信息的API。
  2. 与机器人开启私密聊天,并发出/new命令。机器人会询问您希望为哪个与您的聊天关联的频道创建活动。
  3. 选择您希望创建活动的频道,机器人将生成一个用于创建事件的网页表单的一次性使用链接。
  4. 使用该链接创建活动。
可用命令

对于管理员:

/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-postgrescrate进行数据库交互,但它使用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