x11

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

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

  • Посещение

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

    12

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

  1. На основе нескольких тем форума сделал службу перехвата звонков и номера телефона. http://fire-monkey.ru/topic/3878-статьякак-создать-простой-android-broadcast-receiver-how-to-implement-simplest-android-broadcast-receiver-in-delphi/ http://fire-monkey.ru/topic/2386-перехват-события-звонка/ http://fire-monkey.ru/topic/2972-использование-нативных-localbroadcastmanager-и-broadcastreceiver/ Покритикуйте пожалуйста. Уверен, что не всё правильно. Но что до ума не удалось довести, так это то, как правильно останавливать службу и закрывать приложение. Проект (для Токио) приложил теме. Заранее благодарен. BR2.rar
  2. я уже не помню, но туту нужно погуглить/поспрашивать, как передавать данные между андроидовскими службами и приложениями тут тоже есть примеры и описания
  3. Ну так об этом как раз в этой теме и идёт речь
  4. А кто-нибудь пробовал метод bot.KickChatMember получилось ли забанить пользователя в группе?
  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. здесь http://fire-monkey.ru/topic/5326-fgx-native-выступление-с-демонстрацией-библиотеки-на-запуске-rad-studio-103/?page=2&amp;tab=comments#comment-34196
  8. Можно передать значение переменной любым доступным/удобным способом. Их вагон и маленькая тележка.
  9. qubasesx, вписывай IP в любой форме и сохраняй куда-нибудь, например в базу, а из DataModule читай из базы.
  10. В общем, это связано с тем, что в новых андроидах проверка прав приложения происходит непосредственно при выполнении той или иной функции, которая требует этих прав. Поэтому нужно при выполнении этой функции обрабатывать запрос прав.
  11. FGX Native новейшая кроссплатформенная библиотека для мобильной разработки на Delphi (Ярослав Бровин) https://youtu.be/0tF5J-jIVzc
  12. На просторах 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
  13. вряд ли исходники откроют, но на гитхабе есть штук 20 примеров
  14. Правда в самом приложении используются другие жабьи обёртки, типа leo lin и bolts framework. Ну т.е. от самой FMX и Delphi ничего кроме компилятора и IDE. Печально, что Idera не развивает и забросила FMX.
  15. Начинает доходить, как скачать, переданные боту картинки. У 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 - ничего такого не нашёл
  16. x11

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

    Я не смотрел проект и буду подсказывать, как. Просто напишу, что LiveBinding - тормознутая и глючная технология. Разработчики так и не довели её до ума. Если есть возможность, лучше отказаться от LiveBinding.
  17. А как получить фото из канала и из личного сообщения, есть примеры?
  18. Разобрался. когда бот отправляет личное сообщение пользователю, то нужно заполнять только ID, а когда сообщение в канал, то - имя. Пользователю: UserLink.ID := StrToIntDef64(edUserId.Text, 0); В канал UserLink.Username := edUserName.Text; Для отправки сообщения в канал можно в качестве ID подставить отрицательное значение chat_ID, у каналов всегда оно отрицательное. Т.е. в любом случае можно всегда заполнять только UserLink.ID В документации Телеграм этого нет https://tlgrm.ru/docs/bots/api#sendmessage
  19. Проблему решил следующим путём. 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). И тогда бот успешно отправил сообщение.
  20. В структуре 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;
  21. Я так понял, старт отправляется автоматически, как только пользователь "входит" в чат к боту или пишет первое сообщение (не знаю), т.к. я увидел, что боту пришло /start, хотя пользователь ничего ещё не писал. Далее... В общем, /start приходит боту автоматически или пользователь сам отправляет. И мой бот должен что-то отправить в ответ пользователю? Вот здесь проблема. https://tlgrm.ru/docs/bots#global-commands как реализовать ответ правильно, если при отправке любого сообщения, я получаю 401?
  22. потом я беру этот "from":{"id":63618xxxx и хочу отправить этому пользователю, т.е. себе, личное сообщение, в итоге получаю 401
  23. да, я данные из чата и личные сообщения от пользователей получаю вот, RAW из события OnUpdate
  24. а для отправки сообщения от бота - пользователю Телеграма, нужны какие-то специфические ключи? или перед отправкой я должен что-то выполнить? выполняю: TelegramBot1.SendMessage(UserLink, edMsgText.Text); получаю: (401) Unauthorized: wrong token specified