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 网络编程

Download history 651/week @ 2024-04-27 561/week @ 2024-05-04 573/week @ 2024-05-11 670/week @ 2024-05-18 541/week @ 2024-05-25 532/week @ 2024-06-01 445/week @ 2024-06-08 494/week @ 2024-06-15 532/week @ 2024-06-22 387/week @ 2024-06-29 344/week @ 2024-07-06 644/week @ 2024-07-13 549/week @ 2024-07-20 936/week @ 2024-07-27 643/week @ 2024-08-03 712/week @ 2024-08-10

每月2,960次下载
用于 21 crate

MPL-2.0 许可证

280KB
5.5K SLoC

irc crate 构建状态 Crates.io 下载 文档

"irc crate" 是一个用Rust编写的线程安全且异步友好的IRC客户端库。它符合 RFC 2812IRCv3.1IRCv3.2,并包含一些来自流行IRCds的额外常用功能。您可以在 docs.rs 上找到最新的、可直接使用的文档。

使用irc crate构建

irc crate 正在被用于用Rust构建新的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_configyaml_config功能分别使用JSON和/或YAML。至少,配置需要定义nicknameserver,所有其他字段都是可选的。您可以在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