Начал писать Телеграм-бот с использованием webhook и столкнулся с проблемой - при вводе тестовой команды, Telegram постоянно шлет update, даже если не ввожу команды: https://prnt.sc/nb64h3
почему так происходит?
Вот код:
public class MessageController : ApiController
{
[Route(@"api/message/update")]
public async Task<OkResult> Update([FromBody] Update update)
{
if (update != null)
{
var commands = Bot.Commands;
var message = update.Message;
var client = await Bot.Get();
if (message?.Type == MessageType.Text)
{
foreach (var command in commands)
{
if (command.Contains(message.Text))
{
command.Execute(message, client);
break;
}
}
}
}
return Ok();
}
}
public abstract class Command
{
private static Logger logger = LogManager.GetCurrentClassLogger();
protected abstract string Name { get; }
public abstract void Execute(Message message, TelegramBotClient client);
public bool Contains(string command)
{
logger.Trace($"Command: {command}");
return command.Contains(this.Name) && command.Contains(AppSettings.Name);
}
}
public static class Bot
{
private static TelegramBotClient client;
private static List<Command> commandsList;
public static IReadOnlyList<Command> Commands => commandsList.AsReadOnly();
public static async Task<TelegramBotClient> Get()
{
if (client != null)
{
return client;
}
commandsList = new List<Command>();
commandsList.Add(new HelloCommand());
//TODO: Add new commands
client = new TelegramBotClient(AppSettings.Key);
var hook = string.Format(AppSettings.Url, "api/message/update");
await client.SetWebhookAsync(hook);
return client;
}
}
public class HelloCommand : Command
{
private static Logger logger = LogManager.GetCurrentClassLogger();
protected override string Name => "hello_booking";
public override async void Execute(Message message, TelegramBotClient client)
{
try
{
var chatId = message.Chat.Id;
var messageId = message.MessageId;
//TODO: BOT LOGIC
await client.SendTextMessageAsync(chatId, "HELLO!", replyToMessageId: messageId);
}
catch (Exception e)
{
logger.Error(e, $"HelloCommand: {e.Message}");
throw;
}
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
JSON файл содержит поле и три массиваПервые 2 массива описывают данные, последний массив содержит массивы с данными, каждый массив это один...
Нужен метод который будет отслеживать изменения в свойствах другого классаПодскажите, пожалуйста, как можно это реализовать или где об этом...
Пытаюсь достать из переменной $result_text ГОСТы, когда в переменной храню короткую строку в которую включён какой нибудь ГОСТ, preg_match_all находитИ...