You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#开发内置机器人如何实现用户输入用户名后返回对应查询结果

C# Telegram 内联查询机器人实现方案

你当前的BotOnInlineQuery方法本身就是处理用户@机器人+查询内容请求的入口,直接在这个方法内按如下步骤修改即可:

1. 获取用户输入的查询内容

方法触发时,用户输入的查询文本存储在e.InlineQuery.Query属性中,在方法开头先获取该值,再插入对应的查询逻辑即可,修改后的参考代码如下:

private async static Task BotOnInlineQuery(object sender, InlineQueryEventArgs e)
{
    // 第一步:获取用户输入的查询内容,去除前后空格
    string searchKeyword = e.InlineQuery.Query?.Trim() ?? string.Empty;
    List<InlineQueryResultBase> resultList = new List<InlineQueryResultBase>();

    // 第二步:这里插入你的查询逻辑
    // 可根据searchKeyword去你的本地数据库、业务接口查询对应结果
    if (!string.IsNullOrEmpty(searchKeyword))
    {
        // 示例逻辑:查询内容含"山"就返回对应风景资源,可自行扩展其他关键词的处理逻辑
        if (searchKeyword.Contains("山"))
        {
            resultList.Add(new InlineQueryResultGif(
                id: Guid.NewGuid().ToString(), // 每个结果的唯一ID
                gifUrl: "https://sticker-collection.com/Peepo_Pepe", 
                thumbUrl: "https://na-dache.pro/uploads/posts/2021-05/1620620302_8-p-domik-v-gorakh-foto-10.jpg")
            {
                // 可选:绑定查询结果的说明文本,实现查询内容和返回结果的关联展示
                Caption = $"你查询的「{searchKeyword}」对应的山景资源"
            });
        }
    }
    else
    {
        // 可选:用户未输入内容时返回默认热门结果
    }

    // 第三步:返回最终查询结果给用户
    await client.AnswerInlineQueryAsync(
        inlineQueryId: e.InlineQuery.Id,
        results: resultList,
        nextOffset: "a",
        isPersonal: true);
}

2. 关键说明

  • 查询内容和结果的绑定:只需要把查询得到的资源地址、描述等信息,填入对应的InlineQueryResult子类的构造参数和属性即可,Telegram客户端会自动展示给发起查询的用户
  • 原代码问题修正:async void改成async Task避免异常无法捕获,原AnswerInlineQueryAsync调用缺少右闭合括号
  • 如果查询逻辑涉及网络请求或数据库查询,建议加超时处理,避免Telegram端请求超时无响应

内容的提问来源于stack exchange,提问作者qabs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:45:05