🤖
[Rust] DiscordのBOT作成 < serenity > - ③
メッセージ送信の書き方
- 後述のメッセージ操作など高度な動作を行う場合、メッセージのオブジェクトが必要となる
- 下記のようなオブジェクトを受け取る書き方が必要になってくる
これまでの書き方
if let Err(why) = msg.channel_id.say(&ctx.http, "!hello").await {
println!("エラー : {:?}", why);
}
メッセージのオブジェクトを受け取る書き方
let m = msg.channel_id.say(&ctx.http, "!hello").await.expect("エラー");
メッセージ送信・応答の種類
メッセージの送信
let m = msg.channel_id.say(&ctx.http, "channel_id.say").await.expect("エラー");
メッセージの送信
リプライを返す
let m = msg.reply(&ctx.http, "reply").await.expect("エラー");
リプライを返す
リプライを返す(色付き)
let m = msg.reply_ping(&ctx.http, "reply_ping").await.expect("エラー");
リプライを返す(色付き)
リプライを返す(メンション付き)
let m = msg.reply_mention(&ctx.http, "reply_mention").await.expect("エラー");
リプライを返す(メンション付き)
リアクションを返す
let m = msg.react(&ctx.http, '\u{1f600}').await.expect("エラー");
リアクションを返す
メッセージの削除
メッセージの削除
m.delete(&ctx.http).await.expect("エラー");
メッセージの編集
- メッセージのオブジェクト
m
がlet mut
で宣言されていること - テキスト以外を含むメッセージも送信可能
メッセージの編集
let n = m.edit(&ctx.http, |m| { m.content("edit") } ).await.expect("エラー");
メッセージの編集
高度なメッセージ送信
- テキスト以外(埋め込み、ボタン等)を含む送信を行う場合は
send_message()
を使う - 下記はテキストのみを送信する例
-
send_message()
内に.content()
を使ってテキストをセットする
メッセージコンポーネントの送信
let m = msg.channel_id.send_message( &ctx, |m| {
m.content("channel_id.send_message")
})
.await
.expect("エラー");
Discussion