小编Bus*_*ist的帖子

Telegram 使用可点击的机器人命令发送消息

我正在用 telegram 编写一个机器人(使用 c#)。

我希望机器人向用户发送带有可点击链接列表的消息。当用户按下此类链接时,客户端应将此命令发布回机器人。它应该看起来像这样(来自@pollbot 的示例): 在此输入图像描述

我试过:

  1. sendMesage 方法,带有 parse_mode=HTML 和 tg:\ 链接。问题:电报将它们视为不安全并退出聊天。或者不显示链接。

    /sendMessage?chat_id=xxxxxxxx&parse_mode=HTML&text=<a href="\Command">CommandText</a>
    
    Run Code Online (Sandbox Code Playgroud)

    ETC...

  2. sendMessage with markdown - 结果相同或没有链接

    /sendMessage?chat_id=xxxxxxxxx&parse_mode=markdown&text=[\CommandText](\Command)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 内联键盘工作正常,但我需要一个链接,而不是按钮

非常感谢任何有关如何实现这一点的建议。

api telegram telegram-bot

4
推荐指数
1
解决办法
7140
查看次数

Task.Factory.StartNew的随机任务无法启动

我需要同时完成5个任务,一次执行最多2个任务.因此,一旦某个任务完成,下一个应该运行,直到没有任务待处理.

我正在使用LB解决方案,解决方案涉及使用信号量来跨任务同步.

void LaunchTaskPool ()
    {
        SemaphoreSlim maxThreadSemaphore = new SemaphoreSlim(2); //Max 2 tasks at a time.

        for (int i = 0; i < 5; i++)                     //loop through 5 tasks to be assigned
        {
            maxThreadSemaphore.Wait();                  //Wait for the queue

            Console.WriteLine("Assigning work {0} ", i);

            Task t = Task.Factory.StartNew(() =>
            {
                DoWork(i.ToString());                   // assign tasks
            }, TaskCreationOptions.LongRunning
                )
                .ContinueWith(
                (task) => maxThreadSemaphore.Release()  // step out of the queue
                );
        }

    }

    void DoWork(string workname)
    { …
Run Code Online (Sandbox Code Playgroud)

c# semaphore multitasking

0
推荐指数
1
解决办法
230
查看次数

标签 统计

api ×1

c# ×1

multitasking ×1

semaphore ×1

telegram ×1

telegram-bot ×1