x11

Пользователи
  • Публикаций

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

  • Посещение

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

    12

Весь контент x11

  1. На просторах 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
  2. вряд ли исходники откроют, но на гитхабе есть штук 20 примеров
  3. Правда в самом приложении используются другие жабьи обёртки, типа leo lin и bolts framework. Ну т.е. от самой FMX и Delphi ничего кроме компилятора и IDE. Печально, что Idera не развивает и забросила FMX.
  4. Начинает доходить, как скачать, переданные боту картинки. У 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 - ничего такого не нашёл
  5. x11

    Непонятный LiveBinding Object

    Я не смотрел проект и буду подсказывать, как. Просто напишу, что LiveBinding - тормознутая и глючная технология. Разработчики так и не довели её до ума. Если есть возможность, лучше отказаться от LiveBinding.
  6. А как получить фото из канала и из личного сообщения, есть примеры?
  7. Разобрался. когда бот отправляет личное сообщение пользователю, то нужно заполнять только ID, а когда сообщение в канал, то - имя. Пользователю: UserLink.ID := StrToIntDef64(edUserId.Text, 0); В канал UserLink.Username := edUserName.Text; Для отправки сообщения в канал можно в качестве ID подставить отрицательное значение chat_ID, у каналов всегда оно отрицательное. Т.е. в любом случае можно всегда заполнять только UserLink.ID В документации Телеграм этого нет https://tlgrm.ru/docs/bots/api#sendmessage
  8. Проблему решил следующим путём. 1. Нужно проверить, что в поле Domain нет токена, т.е. чтобы было только значение URL "https://api.telegram.org/bot" без кавычек, конечно же. 2. Не нужно заполнять UserName, вот код отправки личного сообщения от бота - пользователю: procedure TForm1.btnSendMsgClick(Sender: TObject); Var UserLink: TtgUserLink; begin UserLink.ID := StrToIntDef64(edUserId.Text, 0); // UserLink.Username := edUserName.Text; if UserLink.ID = 0 then begin Memo1.Lines.Add('SendMsg: ' + edUserId.Text + ' is not valid integer value'); exit; end; TelegramBot1.SendMessage(UserLink, edMsgText.Text); end; т.е. я закоментировал "UserLink.Username := edUserName.Text;", как видите. То ли это баг, то ли фича, то ли фиг его знает. Если раскомментировать строку "UserLink.Username := edUserName.Text;", то сообщение будет передаваться вот такой ссылкой: "https://api.telegram.org/bot<token>/sendMessage?chat_id=@channelusername&text=12345" и по такой ссылке я получаю ошибку: 400 bad request: chat not found, хотя согласно документации https://tlgrm.ru/docs/bots/api#sendmessage - (см. снимок) написано, что можно отправлять @имя_юзера_канала, кому предназначено сообщение. Но когда я закоментировал строку, то библиотека создала вот такой URL: "https://api.telegram.org/bot<token>/sendMessage?chat_id=12345678&text=12345" т.е. в параметр chat_id библиотека подставила уже ID пользователя-получателя (12345678). И тогда бот успешно отправил сообщение.
  9. В структуре TtgUserLink я указываю только UserID получателя. Или здесь нужно заполнять обязательно ещё и Username? Вот сейчас такой код: procedure TForm1.btnSendMsgClick(Sender: TObject); Var UserLink: TtgUserLink; begin UserLink.ID := StrToIntDef(edUserId.Text, 0); if UserLink.ID = 0 then begin Memo1.Lines.Add('SendMsg: ' + edUserId.Text + ' is not valid integer value'); exit; end; TelegramBot1.SendMessage(UserLink, edMsgText.Text); end;
  10. Я так понял, старт отправляется автоматически, как только пользователь "входит" в чат к боту или пишет первое сообщение (не знаю), т.к. я увидел, что боту пришло /start, хотя пользователь ничего ещё не писал. Далее... В общем, /start приходит боту автоматически или пользователь сам отправляет. И мой бот должен что-то отправить в ответ пользователю? Вот здесь проблема. https://tlgrm.ru/docs/bots#global-commands как реализовать ответ правильно, если при отправке любого сообщения, я получаю 401?
  11. потом я беру этот "from":{"id":63618xxxx и хочу отправить этому пользователю, т.е. себе, личное сообщение, в итоге получаю 401
  12. да, я данные из чата и личные сообщения от пользователей получаю вот, RAW из события OnUpdate
  13. а для отправки сообщения от бота - пользователю Телеграма, нужны какие-то специфические ключи? или перед отправкой я должен что-то выполнить? выполняю: TelegramBot1.SendMessage(UserLink, edMsgText.Text); получаю: (401) Unauthorized: wrong token specified
  14. Перепроверил. Извиняюсь. Беру слова обратно - OnOpdates срабатывает.
  15. По идее, OnUpdates в любом случае должно срабатывать, даже если приходит одно сообщение. Только там будет количество = 1. Я так понимаю, что у вас запрограммировано только есть > 1?
  16. Я понимаю твой сарказм но... есть 2 события у TtgRecieverUI: OnUpdate и OnUpdates. про "Получение обновлений" читал: https://tlgrm.ru/docs/bots/api#getting-updates но я спрашивал именно про TtgRecieverUI. Когда в канал кто-то пишет сообщение, то у TtgRecieverUI срабатывает OnUpdate, где и можно получить сообщение и др. информацию. Тогда для чего событие OnUpdates, которое не срабатывает при входящем сообщении? Когда оно срабатывает? Ведь у библиотеки пока нет документации, поэтому твой сарказм не уместен сейчас по крайней мере
  17. Там же сущий кошмар, всё одним стримом. Что-то потом найти невозможно. Нужен какой-то форум, где будет структура, вопросы и ответы, где можно будет найти что-то в дальнейшем.
  18. Когда будут примеры, хоть какая-то документация или описание и более менее рабочая библиотека, тогда снова можно будет протестировать. А сейчас я даже не знаю, чем отличается OnUpdate от OnUpdates.
  19. Ок, переустановил. Открыл новый проект. Кинул на форму все три компоненты. Создаю событие tgReceiverService1Update, получаю ошибку: [dcc32 Error] Unit1.pas(33): E2003 Undeclared identifier: 'ItgUpdate'
  20. Открыл пример "RadioRecordAndTelegram", при попытке скомпилировать: [dcc32 Fatal Error] Pls.dpr(18): F2613 Unit 'RadioRecord' not found.
  21. [dcc32 Error] E1026 File not found: 'CloudApiCore.res' [dcc32 Fatal Error] TelegAPi.Types.pas(32): F2063 Could not compile used unit 'TelegaPi.Types.Enums.pas'
  22. Инструкции по установке всё равно нет. Какие папки добавлять в lib path? И т.д.
  23. Пожелание. Добавьте встроенную перекодировку текста сообщений, а то приходит "text":"\u0404\u0456\u0457""