Crates.io | traq-ws-bot |
lib.rs | traq-ws-bot |
version | 0.1.2 |
source | src |
created_at | 2022-12-02 12:42:58.475654 |
updated_at | 2023-03-01 19:25:50.666367 |
description | traQ websocket bot wrapper |
homepage | |
repository | https://github.com/SSlime-s/traq-ws-bot-rs |
max_upload_size | |
id | 728360 |
size | 651,632 |
Warning: 現状の examples は動かないため修正が必要
ref: examples
Go で作成する方法は traP 内 wiki に記載あり
ここでは Rust の使用方法がわかる人向けに BOT の作成から動かすまでを説明します
.env
に BOT_ACCESS_TOKEN=トークン
の形で記述すれば cargo run
をすると動きますBOT は traq_ws_bot::bot::builder
を用いて作成されます。
作成時には BOT アクセストークンが必要で、ここで設定した値は後述するハンドラー内から読み取ることはできず、イベントを取得するためのみに使われます。
BOT は唯一つの Resource を持つことができ、.insert_resource(リソース)
の形で設定することができます。複数回呼ばれた場合は最後ののみが採用されます。
リソースは Send + Sync + 'static
である必要がありますが、Immutable で十分ならば Arc
でのラップなどで一般的な構造体を持つことができます。
.insert_resource
を行ったあとは、それより前に設定されていたハンドラーは resource の使用の有無に関わらず削除されるため、builder
の直後のチェーンで呼ぶことを強く推奨します。
BOT には無制限にハンドラーを追加することができます。リソースを使用しないハンドラーは .on_event_name(ハンドラー)
のように、リソースを使用するハンドラーは .on_event_name_with_resource(ハンドラー)
のように記述できます。
ハンドラーは通常の関数か、環境をキャプチャしないクロージャを使用できます。
.on_event(Key, ハンドラー)
を用いることで、複数のイベント・すべてのイベント に対して一つのハンドラーを用いてまとめて設定することもできます。
一般的な Tips として、message の投稿のイベントなら message.user.bot
のように、BOT に起因するイベントかどうかを取得できるため、無限ループの対策のために BOT からのメッセージであれば返信をしないといった処理を handler 内で行ったほうがいいです。l
通常は reqwest などのてきとうな API クライアントを用いて API Document のリンクを叩くことで、叩けます。この場合は traq_ws_bot::utils::create_client
を用いると少し楽にクライアントを生成できます。
Open API による自動生成のコードを用いることもでき、traq_ws_bot
の openapi
features を有効にした上で、traq_ws_bot::openapi::apis
以下の関数を用いることが可能です。
この場合は traq_ws_bot::utils::create_configuration
を用いると少し楽に configuration を構築することもできます。
WIP
https://github.com/SSlime-s/BOT_SSlime/blob/main/showcase.yaml や https://github.com/SSlime-s/BOT_SSlime/tree/main/.github を参考に書く