77个版本 (1个稳定版)
1.0.0 | 2024年3月18日 |
---|---|
0.15.0 | 2021年1月24日 |
0.14.1 | 2020年8月6日 |
0.14.0 | 2020年5月7日 |
0.3.1 | 2014年11月30日 |
#59 in 网络编程
每月2,960次下载
用于 21 crate
280KB
5.5K SLoC
irc crate
"irc crate" 是一个用Rust编写的线程安全且异步友好的IRC客户端库。它符合 RFC 2812、IRCv3.1、IRCv3.2,并包含一些来自流行IRCds的额外常用功能。您可以在 docs.rs 上找到最新的、可直接使用的文档。
使用irc crate构建
irc crate 正在被用于用Rust构建新的IRC软件。以下是我们最喜欢的项目之一
- alectro — 一个终端IRC客户端
- spilo — 一个最小化的IRC中继器
- irc-bot.rs — 用于编写IRC机器人的库
- playbot_ng — 一个用Rust编写的Rust评估IRC机器人
- bunnybutt-rs — 用于 Feed The Beast Wiki 的IRC机器人
- url-bot-rs — 一个URL抓取IRC机器人
正在制作自己的项目? 提交一个pull请求 来添加它!
入门
要开始使用irc crate与cargo结合,您可以在Cargo.toml文件中添加以下依赖:irc = "0.15"
。高级API可以在irc::client::prelude
中找到。您可以在examples/
、整个文档和下面找到许多示例来帮助您入门。
使用Futures
v0.14版本的发布将所有现有的API替换为基于async/await的一个。
use irc::client::prelude::*;
use futures::prelude::*;
#[tokio::main]
async fn main() -> Result<(), failure::Error> {
// We can also load the Config at runtime via Config::load("path/to/config.toml")
let config = Config {
nickname: Some("the-irc-crate".to_owned()),
server: Some("chat.freenode.net".to_owned()),
channels: vec!["#test".to_owned()],
..Config::default()
};
let mut client = Client::from_config(config).await?;
client.identify()?;
let mut stream = client.stream()?;
while let Some(message) = stream.next().await.transpose()? {
print!("{}", message);
}
Ok(())
}
示例Cargo.toml文件
[package]
name = "example"
version = "0.1.0"
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
irc = "0.15.0"
tokio = { version = "1.0.0", features = ["rt", "rt-multi-thread", "macros", "net", "time"] }
futures = "0.3.0"
failure = "0.1.8"
配置IRC客户端
如上所示,配置irc crate有两种技术:运行时加载和程序配置。运行时加载是通过函数Config::load
完成的,这对于大多数IRC机器人来说可能是足够的。程序配置对于编写测试很方便,但也可以在定义可以将配置转换为Config
的自定义配置格式时很有用。主要配置格式是TOML,但如果您愿意,您也可以通过可选的json_config
和yaml_config
功能分别使用JSON和/或YAML。至少,配置需要定义nickname
和server
,所有其他字段都是可选的。您可以在docs.rs上找到各种字段的详细说明。
另请参阅以下示例,其中包含所有字段的TOML配置
owners = []
nickname = "user"
nick_password = "password"
alt_nicks = ["user_", "user__"]
username = "user"
realname = "Test User"
server = "chat.freenode.net"
port = 6697
password = ""
proxy_type = "None"
proxy_server = "127.0.0.1"
proxy_port = "1080"
proxy_username = ""
proxy_password = ""
use_tls = true
cert_path = "cert.der"
client_cert_path = "client.der"
client_cert_pass = "password"
encoding = "UTF-8"
channels = ["#rust", "#haskell", "#fake"]
umodes = "+RB-x"
user_info = "I'm a test user for the irc crate."
version = "irc:git:Rust"
source = "https://github.com/aatxe/irc"
ping_time = 180
ping_timeout = 20
burst_window_length = 8
max_messages_in_burst = 15
should_ghost = false
ghost_sequence = []
[channel_keys]
"#fake" = "password"
[options]
note = "anything you want can be in here!"
and = "you can use it to build your own additional configuration options."
key = "value"
您可以使用convertconf
在不同的配置格式之间进行转换,如下所示
cargo run --example convertconf -- -i client_config.json -o client_config.toml
注意,格式是根据选定的文件扩展名自动确定的。此工具应使用户将旧配置迁移到TOML变得更容易。
贡献
irc crate是一个免费的开源库,依赖于其维护者Aaron Weiss(@aatxe)和Peter Atashian(@retep998)以及更广泛的Rust社区的贡献。它根据Mozilla Public License 2.0授权,其文本可以在LICENSE.md
中找到。为了促进irc crate周围的包容性社区,我们采用了行为准则,其文本可以在CODE_OF_CONDUCT.md
中找到。您可以在CONTRIBUTING.md
中找到有关如何贡献的详细信息。
依赖
~7–22MB
~315K SLoC