Я использую python-telegram-bot для отправки сообщений пользователям (в личных сообщениях). В документации написано этот бот может отправить сообщение пользователю, зная его channel_id или username .
Но по chat_id сообщение отправляется, а по имени пользователя я получаю ошибку telegram.error.Bad Request: Chat not found `
user10898133 11 Окт 2019 в 12:07
2 ответа
Лучший ответ
def save_user_id(bot, update): username = get_username(update) tg_user, created = YourModel.objects.get_or_create(username=username, first_name=update.message.from_user.first_name, telegram_user_id=update.message.from_user.id)
Поэтому позже вы можете использовать имя пользователя для отправки сообщения:
Забыл добавить get_username функцию. Это просто:
def get_username(update): username = update.message.from_user.username
Но я бы порекомендовал расширить его для ваших нужд, потому что некоторые пользователи не настроили свои имена пользователей
Oleksii Dubniak 11 Окт 2019 в 09:40
TelegramBot + Python: пересылаем сообщения в Ваш чат
Здесь это цитируется
Вы должны отправить название канала, а не имя пользователя здесь.
Источник: question-it.com
Как отправить сообщение в телеграмме по id
- 10/12/2021
- Chebukin Pavel
- 3322 просмотров
- 0 комментариев
Создаем канал в Telegram и отправляем в него сообщение через PHP/Laravel просто и легко
Многие проекты используют нотификацию. Некоторые отправляют сообщения на почту, другие в Telegram, Slack и прочее. Сообщения — отличный вариант сообщить о новом заказе, комментарии, материале на сайте или происхождении какого-то события. Для многих вариантов используются библиотеки. Но вот для текстового сообщения в телеграм такое не нужно.
Достаточно открыть прямую ссылку с нужными параметрами и сейчас я покажу как это сделать, начиная от создания самого канала и до отправки сообщения.
Создаем канал в который бот будет слать сообщение
Почему канал, а не напрямую человеку? Потому что вам не нужно будет переделывать алгоритм, если нотификации должно видеть несколько человек. Не понадобится лезть в код добавляя или удаляя участников. Вы все это сможете сделать в самом телеграмме будучи администратором.
Чтобы создать канал, идем в левое меню, со значком трех полосок и нажимаем «Создать канал»
Задаем название канала, выбираем тип «Публичный» и вводим ссылку по которой он будет доступен. Канал можно позже закрыть, но это самый простой вариант пригласить бота сразу.
Создаем бота
/newbot
После этого бот вам должен ответить сообщением:
Alright, a new bot. How are we going to call it? Please choose a name for your bot.
На которое вы вводите название бота, в моем случае пусть будет MyLaravelClub. В ответ бот спросит техническое имя бота. Оно должно быть с приставкой bot в конце, а значит я просто отвечаю сообщением MyLaravelClubBot.
Если вы не попали на уже существующее имя, бот ответит вам сообщением:
Done! Congratulations on your new bot. You will find it at t.me/MyLaravelClubBot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you’ve finished creating your cool bot, ping our Bot Support if you want a better username for it.
Just make sure the bot is fully operational before you do this.
Use this token to access the HTTP API:
nnnnnnnn:MMMMMMMMMM
Keep your token secure and store it safely, it can be used by anyone to control your bot.For a description of the Bot API, see this page: https://core.telegram.org/bots/api
В этом сообщении nnnnnnnn:MMMMMMMMMM это токен обращения к боту и он нам, как раз будет нужен. Переходим по указанной в сообщении ссылке, в моем случае это t.me/MyLaravelClubBot. В вашем случае будет имя вашего бота. Вместо отправки сообщения будет кнопка с надписью Запустить. Ее и нажимаем, запуская бота.
Приглашаем бота на канал и получаем идентификатор по которому будем писать от имени бота.
Переключаемся в телеграмме на наш канал, жмем на три точки в правом верхнем углу и жмем пункт «Добавить участников». После этого вводим имя нашего бота, это MyLaravelClubBot, в моем случае.
Телеграм предупредит что бота можно добавить только как администратора, на что соглашаемся, нажимая Назначить.
Следующий экран спрашивает какие права управления каналом стоит назначить боту. В нашем случае это не важно, оставляем как предложено по умолчанию.
Нажимаем Сохранить.
Самое время, если сообщение на канале от бота личные и никто не должен их видеть кроме тех кого вы сами пригласили на канал, то меняем тип канала в настройках(правый верхний угол — три точки). Меняем с Публичный на Частный и жмем кнопку Сохранить. Токен бота у нас есть, нужно теперь получить ID нашего канала. На нашем канале пишем сообщение от себя, любого содержимого, например «hello, world!».
«channel_post»:,»chat»:,»date»:1639177800,»text»:»hello, world!»>>
В этом сообщении нас интересует «id»:-1001111111111. Где число вместе со знаком и будет искомым идентификатором нашего канала. Теперь у нас есть все что нужно, а отправить сообщение можно прямой ссылкой вида:
https://api.telegram.org/bot/sendMessage?chat_id=text=Привет%20мир
После перехода по ссылке видим сообщение от бота в нашем канале:
Отправляем сообщение из PHP и/или Laravel
Теперь все просто, осталось лишь в нужном куске кода вызвать переход по ссылке. Сделать это просто следующим образом:
//ID канала куда отправляем $idChannel = ‘-100111111111’; //токен бота которым отправляем сообщение $botToken = ‘nnnnnnnnn:MMMMMMMMMM’; //наше импровизированное сообщение $message = «Статистика заказов за сутки: » .» nnВсего: заказов 99″; //кодируем его, чтобы сохранить переносы строк $message = urlencode($message); //после этого отправляем try < file_get_contents(«https://api.telegram.org/bot$botToken/sendMessage?chat_id=$idChannel>
Отзывы
Пока нет комментариев
Для того чтобы оставить комментарий, авторизуйтесь.
Источник: my-laravel.club
Как получить ID группы или чата в Telegram
Получение chat_id в Telegram возможно исключительно сторонними средствами, так как в целях безопасности эта функциональность была удалена из мессенджера.
Способ 1: Get My ID
Для получения идентификатора группы можно воспользоваться ботами, например Get My ID. Как и большинство подобных решений, это одинаково работает как в настольном варианте приложения, так и в версиях для Android и iOS. В примере далее мы воспользуемся именно клиентом для ПК.
- Запустите программу, перейдите к поисковой строке над списком чатов и введите в неё запрос getmyid_bot. Ниже появятся сгенерированные результаты, кликните по отмеченному на скриншоте.
- Далее нажмите «Запустить».
В окне выбора адресатов укажите Get My ID. Откроется диалог с ботом – здесь нажмите на кнопку отправки сообщения.
Для определения точного идентификатора понадобится прислать боту ещё и ссылку-приглашение на целевой чат. Чтобы получить её для публичных чатов, перейдите к соответствующему диалогу и нажмите на три точки справа,
Способ 2: UserInfo
Следующий бот, решающий поставленную задачу, называется UserInfo.
Это решение функционально ничем не отличается от приведённого выше, остальные похожие инструменты обладают подобными возможностями.
Источник: lumpics.ru