7 个版本
0.2.2 | 2023年2月24日 |
---|---|
0.2.1 | 2023年2月23日 |
0.1.3 | 2023年2月17日 |
#1238 in Web 编程
34 每月下载量
180KB
740 行
Archive Bot
用于管理过时且非常小的频道的 Slack 机器人助手。在其当前版本中,它运行一次然后结束,意味着它应该在计划中运行,例如在 cron 作业或 Lambda 函数中。
配置
Archive bot 需要一些数据才能开始工作
- Slack 机器人令牌
- 通知 频道 ID
- 过滤器前缀(可选)
- 机器人将忽略带有这些前缀的频道。
- 消息(可选)
- 配置发送带有更新前缀的消息。
- 陈旧度(可选)
- 配置频道在被认为是“旧”之前需要多久没有消息。
- 小频道阈值(可选)
- 配置频道在被认为是“小”之前需要有多小。
let bot = ArchiveBot {
// Bot tokens look like: xoxb-xxxxxxxyourtokenxxxxxxx.
token: env::var("SLACK_BOT_TOKEN").expect("Error: environment variable SLACK_BOT_TOKEN is not set."),
// Use the channel ID and not the name.
notification_channel_id: env::var("SLACK_CHANNEL_ID").expect("Error: environment variable SLACK_CHANNEL_ID is not set."),
// Ignore channels beginning with these prefixes.
filter_prefixes: vec!["-"],
// Messages to send (one is picked at random).
message_headers: vec![
"Hey, you've got some cleaning up to do!",
"Hey boss, take a look at these, will ya?",
],
// How long before a channel is stale (in seconds).
stale_after: 6 * 7 * 24 * 60 * 60,
// How small a "small" channel is.
small_channel_threshold: 3,
// Whether to send a secondary notification to a different channel (message only).
notify_secondary_channel: true,
// The ID of a secondary channel.
secondary_notification_channel_id: env::var("SLACK_CHANNEL_2_ID").expect("Error: environment variable SLACK_CHANNEL_2_ID is not set."),
// The message prefix to send to the secondary channel. Will be suffixed with a link to the primary channel.
secondary_message_headers: vec![
"Hey folks! I, uh... made a list for you. Of channels. That you should archive. Maybe.",
"Hey everyone! If you want the satisfaction of crossing a task off your list, I have one!",
],
..ArchiveBot::default()
};
或者,使用默认值
let bot = ArchiveBot {
token: env::var("SLACK_BOT_TOKEN").expect("Error: environment variable SLACK_BOT_TOKEN is not set."),
notification_channel_id: "C01A02A03A04".to_string(),
..ArchiveBot::default()
};
实现
目前这个机器人由一个运行时和一个单独的操作组成。更多操作和配置选项待定。
match bot.run().await {
Ok(_) => println!("Success!"),
Err(e) => panic!("Uhoh! {:}", e),
}
有关更多实现细节,请参阅 示例目录。
设置 Slack
请参阅 Slack 文档中的 基本应用设置。
在 Slack API 管理员 > [您的应用] > 功能 > OAuth & 权限 生成您的机器人用户 OAuth 令牌。
您的应用需要以下权限
频道:历史记录
频道:加入
频道:读取
聊天:写入
组:历史记录
组:读取
日志记录
Archive Bot 实现了 log crate 并不直接产生输出。请参阅 示例目录 中的 simplelog 实现。
查找 Slack 频道 ID
要查找 Slack 频道的 ID,您可以点击频道名称以获取更多信息,并在底部找到它。
依赖项
~7–20MB
~310K SLoC