6 个版本

0.3.0 2020 年 3 月 21 日
0.2.2 2020 年 3 月 21 日
0.1.1 2020 年 3 月 20 日

#9#irc 客户端

无许可证

35KB
912

IRC3 for Rust

好的,适合人类的 Rusty IRC。

免责声明

如果你在寻找一个经过时间考验的库,那么 irc3 不适合你。每天都会发布带有新错误和其他可怕问题的版本。请查看 irc 仓库。否则,祝你好运,享受调试!

编写简单的 ping 器

开始安装 irc3 和异步运行时(本例中为 tokio)。你还需要 futures 抽象来直接与 Stream/Sink API 交互。

irc3 = "0.2"
tokio = "0.2"
futures = "0.3"

首先创建一个 非安全 客户端,使用 Client::new(...),然后发送任何必要的认证消息(例如 PASSNICKUSER)。然后,监听任何包含 PING 命令的传入消息,并使用 PONG 命令回复。命令看起来可能像这样

> PING :tmi.twitch.tv
< PONG :tmi.twitch.tv

你可以在 Rust 中实现它

extern crate tokio;
extern crate irc3;
extern crate futures;

use std::env::var;

use irc3::Client;

use futures::stream::StreamExt as _;
use futures::sink::SinkExt as _;

#[tokio::main]
async fn main() {
	// build a client
	let mut client = Client::new("irc.chat.twitch.tv").await.unwrap();

	client.send(Message::new("PASS").with_param(&var("IRC3_RS_PASSWORD").unwrap())).await.unwrap();
	client.send(Message::new("NICK").with_param(&var("IRC3_RS_NICKNAME").unwrap())).await.unwrap();

	loop {
		let message = match client.next().await {
			Some(res) => res,
			None => break,
		}.unwrap();

		if message.command() == "PING" {
			client.send(Message::new("PONG").with_param(message.params().last().unwrap())).await.unwrap();
		}
	}
}

SSL 连接

你可以使用 Client::new_secure(...) 函数来创建 TLS 加密连接。所有 TLS 都在连接时处理,因此你不需要输入任何额外的内容。

编写服务器

irc3 仓库希望支持服务器,但代码还没有。然而,技术是存在的。使用 MessageTransport 结构体,你可以等待并接受来自客户端的连接。

如果你想要 Server 抽象,请稍后再来!或者,你可以 加入我们 帮助!

依赖项

~5–19MB
~243K SLoC