2017-08-14 11 views
0

私はC#とTelegram.Botライブラリを使って電報ボットを作った。私はBotFatherで "インライン"にして、inlinefeedbackを "enabled"に設定しました。電報ボットInlineResultChosen発砲しない

問題は、Inline answer、InlineResultChosenイベントが発生していないオプションを選択した場合、メッセージはチャットに送信されていますが、送信者自身を除いて誰も見られません。また、メッセージボックス(またはモバイル版の赤い感嘆符)に時計があります。私はインライン音声メッセージを使用しており、送信者が声を聞くことができます。

internal class Program 
{ 
    private static readonly List<InlineQueryResult> _queryResults 
     = new List<InlineQueryResult>(); 

    private static void Main(string[] args) 
    { 
     var key = "..."; 

     var sounds = new Dictionary<string, string>(); 
     sounds.Add("Sound one", "https://omg.lol/1.wav"); 
     sounds.Add("Sound two", "https://omg.lol/2.wav"); 

     foreach (var sound in sounds) 
     { 
      var voice = new InlineQueryResultVoice(); 
      voice.Url = sound.Value; 
      voice.Title = sound.Key; 
      voice.Id = sound.Key; 
      _queryResults.Add(voice); 
     } 

     BackgroundWorker bw = new BackgroundWorker(); 
     bw.DoWork += ProcessBot; 

     if (bw.IsBusy == false) 
     { 
      bw.RunWorkerAsync(key); 
     } 

     Console.ReadLine(); 
    } 

    private static void ProcessBot(object sender, DoWorkEventArgs e) 
    { 
     try 
     { 
      var key = e.Argument as string; 
      var bot = new TelegramBotClient(key); 

      bot.OnInlineQuery += AnswerInlineQuery; 
      bot.OnInlineResultChosen += InlineResultChosen; 
      bot.OnReceiveError += ErrorRecieved; 
      bot.OnReceiveGeneralError += GeneralErrorReceived; 

      bot.StartReceiving(); 

      Console.ReadLine(); 

      bot.StopReceiving(); 
     } 
     catch (Telegram.Bot.Exceptions.ApiRequestException ex) 
     { 
      Console.WriteLine(ex.Message); 
      Console.ReadLine(); 
     } 
    } 

    private static void GeneralErrorReceived(object sender, ReceiveGeneralErrorEventArgs e) 
    { 
     Console.WriteLine("Error catched: " + e.Exception.Message); 
    } 

    private static void ErrorRecieved(object sender, ReceiveErrorEventArgs e) 
    { 
     Console.WriteLine("Error catched: " + e.ApiRequestException.Message); 
    } 

    private static void InlineResultChosen(object sender, ChosenInlineResultEventArgs e) 
    { 
     var result = e.ChosenInlineResult; 

     Console.WriteLine($"Sent a voice message by {result.From.Username}"); 
    } 

    private static async void AnswerInlineQuery(
     object sender, 
     InlineQueryEventArgs queryEventArgs) 
    { 
     var bot = sender as TelegramBotClient; 
     var query = queryEventArgs.InlineQuery; 

     await bot.AnswerInlineQueryAsync(
      query.Id, 
      _queryResults.ToArray(), 
      0); 
    } 
} 

答えて

1

が、私は解決策を見つけた:

は、ここに私のコードです。それは私の失敗でした:音声メッセージは間違った形式でした。まず、Telegram開発者のドキュメントで説明したように.OGGに変更しました。しかし、このケースでは、サウンドはMacOSやiOSでは動作しません!私はすべてのサウンドを.MP3形式に変更しましたが、現在はPCとMacの両方で作業しています。今は1つの問題のみ:Windows Phone 8では動作しないようです。

関連する問題