5个版本

使用旧的Rust 2015

0.0.5 2019年8月9日
0.0.4 2018年9月14日
0.0.3 2018年3月24日
0.0.2 2018年3月7日
0.0.1 2018年3月6日

#8 in #riot

Apache-2.0/GPL-3.0

31KB
536

痴呆症

Matrix协议的Rust小型库

状态

目前,仅支持以下功能

  • 加入房间
  • 发送文本消息和
  • 接收文本消息

计划在未来支持房间创建和接收其他类型的消息。

用法

为了连接到Matrix homeserver并加入房间,你需要在那个homeserver上有一个用户,并为此用户有一个访问令牌。

    let server_url = "https://matrix.org"; // The Matrix homeserver
    let access_token = "DAx…3wo";          // The Matrix user access token

有了这个,你可以创建一个Homeserver对象

    let connection = Homeserver::new(server_url)
        .access_token(access_token)
        .connect();

或者

    let connection = MatrixHomeserver::connect(server_url, access_token);

并使用此对象加入房间

    let mut room = connection.join("#bottest:https://matrix.org".to_owned());

(即使你已经加入了房间,你也需要加入你想要交互的房间。这是为了让库获取房间ID。)

你可以通过connection.get_new_messages()(返回自上次调用以来所有消息的Vector<String>)接收新消息,并通过connection.send_message()(接受一个String)发送消息。

示例

extern crate dementia;

use dementia::{Homeserver, Room};
use std::{thread, time};

fn main() {
    let server_url = "https://matrix.org"; // The Matrix homeserver
    let access_token = "DAx…3wo";          // The Matrix user access token

    let conn = Homeserver::new(server_url)
        .access_token(access_token)
        .connect();
    // The room must already exist
    let mut room = conn.join("#bottest:https://matrix.org".to_owned()); 
        
    let five_sec = time::Duration::new(5, 0);
    loop {
        for message in conn.get_new_messages() {
            if message == "hi" {
                conn.send_message("ahoi!".to_owned());
            }
        }
        thread::sleep(five_sec);
    }
}

如果你还没有访问令牌,但服务器支持密码认证,你可以让库生成自己的访问令牌

    let connection = Homeserver::new("https://matrix.org")
        .username("@example:matrix.org")
        .password("examplepassword")
        .login()
        .connect();

然后,你可以使用以下方法检索访问令牌以用于未来的连接

    access_token = connection.get_access_token();

依赖

~19MB
~426K SLoC