C# 电报机器人InlineResults已选择不触发

C# 电报机器人InlineResults已选择不触发,c#,inline,telegram,telegram-bot,C#,Inline,Telegram,Telegram Bot,我用C#和telegram.bot库制作了一个电报机器人。我在BotFather中将其设置为“内联”,并将“内联反馈”设置为“启用” 问题是,当用户从InlineResult中选择一个选项时,InlineResultSelected事件未触发,消息发送到聊天室,但除了发送者本身,没有人看到它。消息框中还有时钟(或手机版中的红色感叹号)。我使用的是内联语音信息,发送者可以收听 这是我的密码: internal class Program { private static readonly

我用C#和telegram.bot库制作了一个电报机器人。我在BotFather中将其设置为“内联”,并将“内联反馈”设置为“启用”

问题是,当用户从InlineResult中选择一个选项时,InlineResultSelected事件未触发,消息发送到聊天室,但除了发送者本身,没有人看到它。消息框中还有时钟(或手机版中的红色感叹号)。我使用的是内联语音信息,发送者可以收听

这是我的密码:

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);
    }
}
内部类程序
{
私有静态只读列表_queryResults
=新列表();
私有静态void Main(字符串[]args)
{
var key=“…”;
var sounds=newdictionary();
声音。添加(“声音一”https://omg.lol/1.wav");
声音。添加(“声音二”https://omg.lol/2.wav");
foreach(声音中的var声音)
{
var voice=新的InlineQueryResultVoice();
voice.Url=sound.Value;
voice.Title=sound.Key;
voice.Id=sound.Key;
_查询结果。添加(语音);
}
BackgroundWorker bw=新的BackgroundWorker();
bw.DoWork+=ProcessBot;
如果(bw.IsBusy==false)
{
RunWorkerAsync(key);
}
Console.ReadLine();
}
私有静态void ProcessBot(对象发送方,DoWorkEventArgs e)
{
尝试
{
var key=e.参数为字符串;
var bot=新客户端(密钥);
bot.OnInlineQuery+=应答器InLineQuery;
bot.onInlinesUltSelected+=InlinesUltSelected;
bot.OnReceiveError+=已接收的错误;
bot.OnReceiveGeneralError+=GeneralErrorReceived;
bot.StartReceiving();
Console.ReadLine();
bot.StopReceiving();
}
catch(Telegram.Bot.Exceptions.ApiRequestException-ex)
{
控制台写入线(例如消息);
Console.ReadLine();
}
}
私有静态void GeneralErrorReceived(对象发送方、接收方GeneralErrorReventArgs e)
{
Console.WriteLine(“捕获的错误:+e.Exception.Message”);
}
私有静态void ErrorReceived(对象发送方,ReceiveErrorEventArgs e)
{
WriteLine(“捕获的错误:+e.APIRestException.Message”);
}
私有静态无效InlineResultSelected(对象发送方,ChosenInlineResultEventArgs e)
{
var结果=e.ChosenInlineResult;
Console.WriteLine($“通过{result.From.Username}发送语音消息”);
}
私有静态异步void AnswerInlineQuery(
对象发送器,
InlineQueryEventArgs queryEventArgs)
{
var bot=发送方作为客户端;
var query=queryEventArgs.InlineQuery;
等待bot.AnswerInlineQueryAsync(
query.Id,
_queryResults.ToArray(),
0);
}
}

我找到了解决方案。这是我的失败:语音信息格式错误。首先,我将其更改为.OGG,如Telegram开发者文档中所述。但在这种情况下,声音在MacOS和iOS上不起作用!我把所有的声音都改成了.MP3格式,现在它们可以在PC机和Mac机上使用了。现在只有一个问题:它似乎在WindowsPhone8上不起作用