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

x11

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

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

  • Посещение

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

    13

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

  1. А как получить фото из канала и из личного сообщения, есть примеры?
  2. Разобрался. когда бот отправляет личное сообщение пользователю, то нужно заполнять только ID, а когда сообщение в канал, то - имя. Пользователю: UserLink.ID := StrToIntDef64(edUserId.Text, 0); В канал UserLink.Username := edUserName.Text; Для отправки сообщения в канал можно в качестве ID подставить отрицательное значение chat_ID, у каналов всегда оно отрицательное. Т.е. в любом случае можно всегда заполнять только UserLink.ID В документации Телеграм этого нет https://tlgrm.ru/docs/bots/api#sendmessage
  3. Проблему решил следующим путём. 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). И тогда бот успешно отправил сообщение.
  4. В структуре 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;
  5. Я так понял, старт отправляется автоматически, как только пользователь "входит" в чат к боту или пишет первое сообщение (не знаю), т.к. я увидел, что боту пришло /start, хотя пользователь ничего ещё не писал. Далее... В общем, /start приходит боту автоматически или пользователь сам отправляет. И мой бот должен что-то отправить в ответ пользователю? Вот здесь проблема. https://tlgrm.ru/docs/bots#global-commands как реализовать ответ правильно, если при отправке любого сообщения, я получаю 401?
  6. потом я беру этот "from":{"id":63618xxxx и хочу отправить этому пользователю, т.е. себе, личное сообщение, в итоге получаю 401
  7. да, я данные из чата и личные сообщения от пользователей получаю вот, RAW из события OnUpdate
  8. а для отправки сообщения от бота - пользователю Телеграма, нужны какие-то специфические ключи? или перед отправкой я должен что-то выполнить? выполняю: TelegramBot1.SendMessage(UserLink, edMsgText.Text); получаю: (401) Unauthorized: wrong token specified
  9. Перепроверил. Извиняюсь. Беру слова обратно - OnOpdates срабатывает.
  10. По идее, OnUpdates в любом случае должно срабатывать, даже если приходит одно сообщение. Только там будет количество = 1. Я так понимаю, что у вас запрограммировано только есть > 1?
  11. Я понимаю твой сарказм но... есть 2 события у TtgRecieverUI: OnUpdate и OnUpdates. про "Получение обновлений" читал: https://tlgrm.ru/docs/bots/api#getting-updates но я спрашивал именно про TtgRecieverUI. Когда в канал кто-то пишет сообщение, то у TtgRecieverUI срабатывает OnUpdate, где и можно получить сообщение и др. информацию. Тогда для чего событие OnUpdates, которое не срабатывает при входящем сообщении? Когда оно срабатывает? Ведь у библиотеки пока нет документации, поэтому твой сарказм не уместен сейчас по крайней мере
  12. Там же сущий кошмар, всё одним стримом. Что-то потом найти невозможно. Нужен какой-то форум, где будет структура, вопросы и ответы, где можно будет найти что-то в дальнейшем.
  13. Когда будут примеры, хоть какая-то документация или описание и более менее рабочая библиотека, тогда снова можно будет протестировать. А сейчас я даже не знаю, чем отличается OnUpdate от OnUpdates.
  14. Ок, переустановил. Открыл новый проект. Кинул на форму все три компоненты. Создаю событие tgReceiverService1Update, получаю ошибку: [dcc32 Error] Unit1.pas(33): E2003 Undeclared identifier: 'ItgUpdate'
  15. Открыл пример "RadioRecordAndTelegram", при попытке скомпилировать: [dcc32 Fatal Error] Pls.dpr(18): F2613 Unit 'RadioRecord' not found.
  16. [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'
  17. Инструкции по установке всё равно нет. Какие папки добавлять в lib path? И т.д.
  18. Пожелание. Добавьте встроенную перекодировку текста сообщений, а то приходит "text":"\u0404\u0456\u0457""
  19. Заполнил и токен, и chat id, но при отправке {"ok":false,"error_code":400,"description":"Bad Request: chat not found"} хотя если со смартфона я пишу сообщения в чат, то вижу их на вкладке OnUpdate
  20. Пункт 2 правильно было бы переписать так. Запустить пример, заполнить Token и нажать Apply. Перейти на вкладку OnUpdate и со своего смартфона что-то написать от имени бота и в компоненте "mmoOnUpdadtes" появится Chat ID.
  21. Ввёл token, нажал Apply, перешёл на вкладку SenMessage и нажал на Send, получил ошибку: Project SendMethods.exe raised exception class Exception with message 'Not assigned required data'. Использую TcuHttpClientIndy. Если использовать TcuHttpClientSysNet, то исключений нет, но и сообщения не отправляются и на вкладке OnUpdate появляется {"ok":false,"error_code":400,"description":"Bad Request: chat_id is empty"}
  22. Так, дошло. Только в примере пункт 0 должен быть таким: 0. Установить CrossUrl, кинуть на форму TcuHttpClientSysNet или TcuHttpClientIndy и указать в свойстве TelegramBot1.HttpCore нужную вам библиотеку для работы с сетью. Ещё один пункт допишите: в папку \TelegaPi\Bin\Win32-Debug\ скопируйте 2 файла: libeay32.dll и ssleay32.dll для работы с SSL.
  23. У компоненты TtgExceptionManagerUI щёлкаю дважды для создания события и получаю ошибку: Cannot find implementation of method tgExceptionManagerUI1Log.
×
×
  • Создать...