Pull to refresh

Comments 8

А я уместился в 52 строки (+14 строк модель) на Delphi. Но это вряд ли кому-то интересно. Что вы хотели этой статьей сказать?

Код
program TGBOT_CURRENCY;

uses
  System.SysUtils, REST.Json, TgBotApi.Client, TgBotApi;

begin
  Client := TtgClient.Create({$INCLUDE BOT_TOKEN.key});

  Client.Subscribe(
    function(Update: TtgUpdate): Boolean
    begin
      var Answer := 'Hi, ' + Update.Message.Chat.FirstName + ', nice to meet you!' + #13#10 +
        'Enter the currency whose official exchange rate' + #13#10 +
        'you want to know in relation to BYN.' + #13#10 +
        'For example: USD';

      Client.SendMessageToChat(Update.Message.Chat.Id, Answer);
      Result := True;
    end, '/start');

  Client.Subscribe(
    function(Update: TtgUpdate): Boolean
    begin
      if Update.Message.Text.IsEmpty then
        Exit(False);
      var Answer := '';
      try
        Answer := Client.Get('https://www.nbrb.by/api/exrates/rates/' + Update.Message.Text + '?parammode=2');
        var Model := TJson.JsonToObject<TCurrencyModel>(Answer);
        if not Assigned(Model) then
          raise Exception.Create('JSON is empty');
        try
          Answer := 'Official rate of BYN to ' + Model.CurAbbreviation + #13#10 +
            'on the date: ' + FormatDateTime('c', Model.Date) + #13#10 +
            'is: ' + Model.CurOfficialRate.ToString + ' BYN per ' + Model.CurScale.ToString + ' ' + Model.CurAbbreviation;
        finally
          Model.Free;
        end;
      except
        Answer :=
          'We have not found such a currency.' + #13#10 +
          'Enter the currency whose official exchange rate' + #13#10 +
          'you want to know in relation to BYN.' + #13#10 +
          'For example: USD';
      end;
      Client.SendMessageToChat(Update.Message.Chat.Id, Answer);
      Result := True;
    end);

  Client.Polling;
  Client.Free;
end.

Спасибо за комментарий. Классный пример на Delphi

Ты уже во всех чатах Беларуси со своим ботом отметился, и решил на Хабр выйти?!

Так сказать российский рынок подмять....

Спасибо за комментарий. Данное API для курсов валют было использовано, так как до него можно достучаться без каких-либо дополнительных регистраций, и исключительно для примера. Никакой "Теории заговора" тут нет)))

Спасибо за статью.

Нет желание развить тему с кнопочками?

Спасибо за комментарий. Пока в планах нет такого, но я подумаю))) Хотя тут уже есть каркас, на который при желании и с учетом того, что хотите получить на выходе, можно дальше "пилить": кнопки, базу данных подключать и т.д.

Sign up to leave a comment.

Articles