Перейти к содержанию
Fire Monkey от А до Я

x11

Пользователи
  • Постов

    828
  • Зарегистрирован

  • Посещение

  • Победитель дней

    13

Сообщения, опубликованные x11

  1. У кого есть пример использования клавиатуры?

    TtgInlineKeyboardMarkup

    TtgInlineKeyboardButton

    procedure TForm1.btnSendKeyBoardClick(Sender: TObject);
    Var
     UserLink: TtgUserLink;
     Kb: TtgInlineKeyboardMarkup;
    begin
      UserLink := StrToInt64Def(edChatId.Text, 0);
    
      if UserLink.ToString = '0' then
      begin
        Memo1.Lines.Add('SendMsg: ' + edChatId.Text + ' is not valid integer value');
        exit;
      end;
    
    
      Kb := TtgInlineKeyboardMarkup.Create;
      try
        Kb.AddRow([TtgInlineKeyboardButton.Create('1'),
                   TtgInlineKeyboardButton.Create('2'),
                   TtgInlineKeyboardButton.Create('3'),
                   TtgInlineKeyboardButton.Create('4')]);
    
        Kb.AddRow([TtgInlineKeyboardButton.Create('5'),
                   TtgInlineKeyboardButton.Create('6'),
                   TtgInlineKeyboardButton.Create('7'),
                   TtgInlineKeyboardButton.Create('8')]);
    
    
        TelegramBot1.SendMessage(UserLink, edChatMsgText.Text, TtgParseMode.default, False, False, 0, KB);
      finally
        kb.DisposeOf;
      end;
    end;

    в итоге получаю ошибку

    Project raised exception class EArgumentException with message 'В данном методе указанное значение не может быть таким, как и значение по-умолчанию'.

  2. Видать, там ограничение на сессию.

    Т.е. после ошибки при скачивании нужно подождать минут 30-40 и нажать кнопку докачки.

    Сейчас докачиваю 1,75

  3. Предупреждаю!

    Автор зачем-то использует формат файлов UNIX. Поэтому все файлы нужно преобразовать (пересохранить) в формат Windows (CR LF) иначе отладчик сходит с ума в буквальном смысле - останавливается не на точках остановки, переходит между строк, а доводчик кода (code insight) вообще не работает.

    index.png

  4. AllaKore_Remote программа удалённого доступа по принципу IP-to-ID, как Тимвьювер.

    Т.е. клиент + сервер, которые раздаёт ID. Исходники открыты.

    https://github.com/Maickonn/AllaKore_Remote

    У меня на Delphi Tokyo скомпилировалось и работает. Хотя и куча предупреждений при компиляции.

    Пока что 2 минуса.

    1. ID Каждый раз новый, нет привязки к ПК.

    2. Клиентская часть не в виде службы, а в виде обычного приложения.

    /delphi remote admin open source/

  5. В общем сделал через GetFileUrl

     

    procedure GetChatAva;
    Var
      chat: ItgChat;
      iChatID: int64;
      s: string;
      tgFile: ItgFile;
      img_stream: TMemoryStream;
    begin
    
      iChatID := ....;
      
      chat := bot.GetChat(iChatID);
      if not Assigned(chat) then
      begin
    
        exit;
      end;
    
      s := chat.Photo.SmallFileId;
      tgFile := bot.GetFile(s);
      if not Assigned(tgFile) then
      begin
    
        exit;
      end;
    
      s := tgFile.GetFileUrl(aBotToken);
      if s.IsEmpty then
      begin
    
        exit;
      end;
    
      img_stream := TMemoryStream.Create;
      try
        DownloadImage(s, img_stream);
        
        if img_stream.Size <= 0 then
        begin
    
          exit;
        end;
    
    
    
      finally
        img_stream.DisposeOf;
      end;
    
    
    end;

     

  6. Кто-нибудь пытался получить аватарку (картинку) канала?

    Бот добавлен в публичный канал и имеет доступ к сообщениям.

    При получении сообщения хочу получить аву, но код всегда возвращает false

    if Assigned(AMessage.Chat.Photo) then

     

    Или подскажите, как правильно, в какой момент получить значок канала?

    Может нужен специальный запрос в API?

    Спасибо.

  7. В 22.02.2018 в 16:12, x11 сказал:

    Вопрос по Андроиду 6 и выше.

    Оказалось, что служба с  BroadcastReceiver`ом не получает сообщения, если в targetSdkVersion указать версию 24 или 25.

    Если указываешь не выше 22, то получает и срабатывает. С чем это связано может быть? Нет ошибок, просто BroadcastReceiver не получает сообщения.

    В общем, это связано с тем, что в новых андроидах проверка прав приложения происходит непосредственно при выполнении той или иной функции, которая требует этих прав. Поэтому нужно при выполнении этой функции обрабатывать запрос прав.

  8. Правда в самом приложении используются другие жабьи обёртки, типа leo lin и bolts framework. Ну т.е. от самой FMX и Delphi ничего кроме компилятора и IDE. Печально, что Idera не развивает и забросила FMX.

  9. На просторах sql.ru  нашёл ссылку на приложение kiskis на Delphi/FMX. Что-то типа мессенджер+инстаграм.

    https://youtu.be/WEsEhGfrW-g

    Alcinoe is a library visual and non-visual components for Delphi.

    https://github.com/Zeus64/alcinoe

    Screenshot_7.png

    Screenshot_8.png

    Screenshot_6.png

    Screenshot_5.png

    Screenshot_3.png

  10. Начинает доходить, как скачать, переданные боту картинки.

    У TItgMessage есть свойство "&Type", не знаю, зачем разработчики сделали с "&". Этот "TItgMessage.&Type" определяет тип сообщения: картинка, видео, контакт и т.д. И вот в событии tgReceiverUI.OnUpdate можно определить тип сообщения:


     

    if Assigned(AUpdate.message) then
    
    begin
    
    case AUpdate.message.&Type of
          TtgMessageType.Photo: ReceivePhoto(AUpdate.message.Photo);
    
        end;// case
    
    end;

     

    обрабатываем массив полученных фото
     

    procedure TForm1.ReceivePhoto(Photos: TArray<TelegAPi.Types.ItgPhotoSize>);
    Var
      PhotoSize: TelegAPi.Types.ItgPhotoSize;
      tgFile: ItgFile;
      FileUrl: string;
    begin
      for PhotoSize in Photos do
      begin
        tgFile := TelegramBot1.GetFile(PhotoSize.FileId);
        if tgFile.CanDownload then
        begin
          FileUrl := tgFile.GetFileUrl(TelegramBot1.Token);
          Memo1.Lines.Add('ReceivePhoto, FileUrl: ' + FileUrl);// получаем прямую  https-ссылку на картинку jpg.
    
        end;
    
      end;
    
    end;
    

    Дальше пока не разобрался с методом скачивания. То ли у библиотеки уже есть встроенные методы скачивания, то я сам должен скачать.

    Поискал по исходникам слово Download - ничего такого не нашёл :(

     

     

×
×
  • Создать...