ボットがキャプション(キーボードボタン要素のテレグラムクライアントによって表示される)とは異なるメッセージを印刷する必要があります。
私のカスタムボタンには次のテキストがあります:"Where am I?"
そしてそれをクリックすると、画面にも"Where am I?"
と印刷されます。ボタンに"/location"
を印刷したい(text
フィールドとは異なるもの)
どうすればそれを達成できますか? C#
とTelegram Bot API
を使用しています
編集:
欲しいもの:
/age
[入力したメッセージとして]を使用してメッセージを送信しますが、[〜#〜] not [〜#〜] send show my age
(これはそのボタンtext
フィールドです)だから:私はtext
のボタンが欲しいです。ユーザーがボタンをクリックしたときに、送信されるメッセージをそのtext
とは異なるものにします。
場所のブールフィールドがありますが、trueに設定しましたか? https://core.telegram.org/bots/api#keyboardbutton
更新:ユーザーに返信を送信している場合は、ReplyKeyboardMarkupも送信しています。 ReplyKeyboardMarkupには、KeyboardButtonの配列の配列であるkeyboardというフィールドがあります。各KeyboardButtonには、そのボタンに場所を送信させる場合にtrueに設定する必要がある場所のブール値があります
アップデート2
あなたのテキストとは異なるメッセージを持つことはできません。 text-文字列->ボタンのテキスト。オプションのフィールドが使用されていない場合、ボタンが押されたときにメッセージとしてボットに送信されます
ReplyKeyboardMarkupの代わりに InlineKeyboardMarkup を見たことがありますか?それはあなたの問題を解決することができます。
[〜#〜] upd [〜#〜]
基本的な使用法
public static InlineKeyboardMarkup TestInlineKeyboard { get; } = new InlineKeyboardMarkup
{
InlineKeyboard = new []{new[] {new InlineKeyboardButton("Text1","Data1"), new InlineKeyboardButton("text1","data2")} }
};
ここで、「Text1」と「text1」はインラインボタンのキャプション、「Data1」と「data2」はユーザーがインラインボタンをクリックしたときにボットが受信するCallbackQueryテキストです。ユーザーがインラインボタンをクリックしても、ボットはメッセージを送信しないことに注意してください。その時点でメッセージを送信する必要がある場合は、プログラムで送信できます。