web-dev-qa-db-ja.com

C#を使用してキーボードボタンのメッセージテキストをTelegramボットAPIのキャプションとは異なるものにする方法

ボットがキャプション(キーボードボタン要素のテレグラムクライアントによって表示される)とは異なるメッセージを印刷する必要があります。

私のカスタムボタンには次のテキストがあります:"Where am I?"そしてそれをクリックすると、画面にも"Where am I?"と印刷されます。ボタンに"/location"を印刷したい(textフィールドとは異なるもの)

どうすればそれを達成できますか? C#Telegram Bot APIを使用しています

編集:

欲しいもの:

  • ユーザーがこのボタンをクリックすると、テレグラムクライアントは/age [入力したメッセージとして]を使用してメッセージを送信しますが、[〜#〜] not [〜#〜] send show my age(これはそのボタンtextフィールドです)

だから:私はtextのボタンが欲しいです。ユーザーがボタンをクリックしたときに、送信されるメッセージをそのtextとは異なるものにします。

5

場所のブールフィールドがありますが、trueに設定しましたか? https://core.telegram.org/bots/api#keyboardbutton

更新:ユーザーに返信を送信している場合は、ReplyKeyboardMarkupも送信しています。 ReplyKeyboardMarkupには、KeyboardButtonの配列の配列であるkeyboardというフィールドがあります。各KeyboardButtonには、そのボタンに場所を送信させる場合にtrueに設定する必要がある場所のブール値があります

アップデート2

あなたのテキストとは異なるメッセージを持つことはできません。 text-文字列->ボタンのテキスト。オプションのフィールドが使用されていない場合、ボタンが押されたときにメッセージとしてボットに送信されます

0
Ashkan Sirous

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テキストです。ユーザーがインラインボタンをクリックしても、ボットはメッセージを送信しないことに注意してください。その時点でメッセージを送信する必要がある場合は、プログラムで送信できます。

1
anatol