Message
すべてのハンドラは *goroku.Message を受け取ります。
フィールド
| フィールド | 型 | 意味 |
|---|---|---|
ID | int64 | メッセージ ID |
ChatID | int64 | 送信されたチャット |
SenderID | int64 | 送信者のユーザー ID。送信者がユーザーでない場合は 0 — 匿名管理者やチャンネル名義の投稿 |
SenderChannelID | int64 | 送信元として使われたチャンネル。ユーザーの場合は 0 |
SenderIsChannel | bool | 送信者がユーザーではなくチャンネルか |
Text | string | 書式適用後のテキスト |
RawText | string | 入力そのままのテキスト |
Entities | []tg.MessageEntityClass | 書式エンティティ |
Out | bool | このアカウントが送信した |
Media | tg.MessageMediaClass | 添付、無ければ nil |
IsPrivate | bool | 個人チャット |
IsGroup | bool | グループチャット |
IsChannel | bool | チャンネル |
ReplyToMsgID | int64 | 返信先メッセージ、無ければ 0 |
IsForwarded | bool | 転送されたもの |
FwdFrom | tg.MessageFwdHeader | 転送ヘッダ |
ViaBotID | int64 | 使用されたインラインボット、無ければ 0 |
Answered | bool | ハンドラが既に応答したか |
Client | *CustomTelegramClient | 受信したクライアント |
引数
Args() string
コマンド語より後ろすべて、前後の空白を除いたもの。内部の空白は保たれます。
go
// .say こんにちは みなさん
msg.Args() // "こんにちは みなさん"ArgsList() []string
Args を空白で分割したもの。空なら nil。
Arg(i int) string
i 番目の引数。範囲外なら ""。panic しません。
ArgsOrReply() string
Args()。空なら返信先メッセージのテキスト。どちらも無ければ ""。
go
code := msg.ArgsOrReply()
if code == "" {
return msg.Answer("❌ テキストを送るか、メッセージに返信してください")
}4つとも nil レシーバで安全です。
応答
Answer(text string, opts ...MsgOption) error
自分のメッセージを編集するか、他人がコマンドを実行した場合は返信します。既定の 選択肢です。
Reply(text string, opts ...MsgOption) error
常に新しいメッセージを返信として送ります。
Edit(text string, opts ...MsgOption) error
常にこのメッセージを編集します。
Delete() error
このメッセージを削除します。
オプション
| オプション | 効果 |
|---|---|
WithNoWebpage(bool) | リンクプレビューを抑制 |
WithReplyTo(int64) | メッセージへ返信、またはフォーラムのトピックへ投稿 |
WithInvertMedia(bool) | プレビューをテキストの上に |
WithWebPageMedia(url string, optional, forceLarge bool) | プレビューを指定 |
go
msg.Answer("プレビューなし", goroku.WithNoWebpage(true))その他のメソッド
GetReplyMessage() (*Message, error)
返信先のメッセージを取得します。無い場合は nil, nil を返します。
Context() context.Context
ボット終了時にキャンセルされます。時間のかかる処理に渡してください。
GetChatID() / GetID() / GetReplyToMsgID() int64
nil でも安全なアクセサです。
IsOut() bool
このアカウントが送信したメッセージかどうか。