Мне было интересно, могу ли я отправить сообщение с моим ботом на telegram bot api, на несколько chat_id, но я не могу понять это. это полностью из-за телеграмм API, так трудно понять.
Я использовал это для отправки сообщения одному chat_id:
Решение
Нет способа заставить бота отправить сообщение на несколько идентификаторов чата, но есть хитрость, которая может это исправить сейчас
Почему бы не отправлять каждому чату сообщение ?!
Давайте посмотрим на этот пример в PHP:
Другие решения
Проблема с foreach или любым другим массивным sendMessage заключается в том, что API не будет разрешать более ~ 30 сообщений различным пользователям в секунду.
В соответствии с Боты FAQ на сайте телеграммы:
Как я могу отправить сообщение всем подписчикам моего бота одновременно?
К сожалению, на данный момент у нас нет методов для отправки массовых сообщений, например уведомления. Мы можем добавить что-то подобное в будущем.Простой Telegram бот на Java и Spring Boot: Отправляем сообщения всем пользователям бота
Чтобы не нарушать наши ограничения при рассылке массовых уведомлений, рассмотрите возможность их распространения на более длительные промежутки времени, например 8-12 часов. API не будет допускать более ~ 30 сообщений для разных пользователей в секунду, если вы пройдете через это, вы получите 429 ошибок.
Вы не можете отправить сообщение таким образом всем пользователям.
и решение на странице часто задаваемых вопросов ботов:
Мой бот выходит за пределы, как мне избежать этого?
При отправке сообщений в определенном чате избегайте отправки более одного сообщения в секунду. Мы можем разрешить короткие всплески, превышающие этот предел, но в итоге вы получите 429 ошибок.
Если вы отправляете массовые уведомления нескольким пользователям, API не разрешит более 30 сообщений в секунду или около того. Для получения наилучших результатов рассмотрите возможность рассылки уведомлений через большие интервалы 8–12 часов.
Также обратите внимание, что ваш бот не сможет отправлять более 20 сообщений в минуту одной и той же группе.
Просто чтобы ты знал.
Футбольный телеграм бот на Python (2/4): Функциональность бота
Во второй части серии статей по написанию телеграм бота на python, мы добавим функциональность. Бот будет приветствовать новых юзеров, предлагать выбрать и сохранять лиги. Добавим возможность получить результаты по выбранным лигам.
«Рыба» кода бота
Сразу запишем функции в «bot.py», которые понадобятся. Предварительно удалите test_message :
Это не окончательная версия, я мог что-то упустить. В процессе добавим недостающие.
Каждая функция обернута декоратором, так мы общаемся с Телегармом:
Итак. Пользователь нажимает команду старт, получает приветственное сообщение. В нем мы предлагаем выбрать 3 лиги и мониторить результаты по ним. Получить результаты можно командой или кнопкой меню. Так же мы даем возможность изменить выбранные соревнования или удалить свои данные из бота.
Отправка telegram сообщение на python
Добавление команд в бота
Изначально команды не настроены. Пользователи могут вводить их, но специально меню нет. Для добавления нужно снова написать https://t.me/botfather команду /setcommands . Выберите своего бота и добавьте этот текст:
start — Запуск и перезапуск бота
help — Возможности бота
online — Результаты матчей
В ответ получите «Success! Command list updated. /help». Теперь можно перейти в своего бота и проверить:
Ответы на команды
Взаимодействие с ботом начинается с команды /start . Нужно поприветствовать и предложить следующий шаг. Эта команда будет возвращать текст с клавиатурой. Точно так же работает и /help .
Добавим обработку этих команд в «bot.py», обновите start_handler help_handler :
Я добавил импорт import app.service as s . В этом модуле клавиатура и функция проверки пользователя. start_handler проверяет есть ли пользователь в кеше или базе данных, и отправляет ему соответствующий текст.
Перед отправкой текста для выбора лиг, я сохранил его будущий id. Получил номер последнего сообщения (это сама команда «start») и добавил 2 пункта: +1 за наш ответ на команду и +1 за само сообщения выбора лиг. Зная id сообщения, его можно редактирвать.
Теперь напишем клавиатуру и get_league_ids в модуль «service».
# fonlinebot/app/service.py from aiogram.types import ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton from emoji import emojize from config import BOT_LEAGUES, BOT_LEAGUE_FLAGS from database import cache, database as db from app.dialogs import msg MAIN_KB = ReplyKeyboardMarkup( resize_keyboard=True, one_time_keyboard=True ).row( KeyboardButton(msg.btn_online), KeyboardButton(msg.btn_config) ) async def get_league_ids(user_id: str) -> list: «»»Функция получает id лиг пользователя в базе данных»»» leagues = cache.lrange(f»u», 0, -1) if leagues is None: leagues = await db.select_users(user_id) if leagues is not None: leagues = leagues.split(‘,’) [cache.lpush(f»u», lg_id) for lg_id in leagues] else: return [] return leagues
MAIN_KB — основная клавиатура, как на скриншоте выше. Разберем подробнее:
- ReplyKeyboardMarkup — объект, который создает клавиатуру.
- Параметр resize_keyboard=True уменьшает ее размер.
- А с one_time_keyboard=True клавиатура будет скрываться, после использования.
- .row — метод для группировки кнопок в строку.
- KeyboardButton(msg.btn_online) и KeyboardButton(msg.btn_config) — кнопки с заданным текстом.
Осталось только добавить текста сообщений в dialogs. Вставьте этот код в класс Messages .
# fonlinebot/app/dialogs.py # . start_new_user: str = «Привет. Я могу сообщать тебе результаты матчей online.» start_current_user: str = «Привет. С возвращением! » «Используй команды или меню внизу для продолжения.» help: str = «»» Этот бот получает результаты матчей за последние 48 часов. Включая режим LIVE. — Что бы выбрать/изменить лиги нажмите «Настройки». — Для проверки результатов нажмите «Онлайн».
Бот создан в учебных целях, для сайта pythonru.com «»»
Выбор, изменение и удаление лиг
Сначала внесем правки в наши вспомогательные модули.
В «dababase» в класс Database добавим новый метод insert_or_update_users .
# fonlinebot/database.py #. async def insert_or_update_users(self, user_id: int, leagues: str): user_leagues = await self.select_users(user_id) if user_leagues is not None: await self.update_users(user_id, leagues) else: await self.insert_users(user_id, leagues) #.
В настройки добавим переменные метрик времени:
Источник: pythonru.com
Бот обратной связи в Telegram
Сегодня мы расскажем о том, как быстро создать бот обратной связи в Telegram с помощью Livegram Bot. Это будет полезно администраторам каналов, которые хотят получить фидбек и остаться анонимными, компаниям для создания своего небольшого колл-центра и пользователям, которые не хотят заспамить личку множеством чатов.
Создание бота
Запускаем бот, выбираем язык, вводим команду /addbot и отправляем Токен вашего бота. Если все сделано правильно, вы получите сообщение о том, что бот успешно подключен к Livegram и уже готов к работе!
Подключение бота к чату
Все сообщения от пользователей по умолчанию приходят в бот и доступны только вам. Но для более удобного использования можно подключить бот к группе и все сообщения будут приходить туда. Кроме того, это даст возможность отвечать на сообщения другим участникам группы.
- Создайте группу и преобразуйте ее в супергруппу.
- Добавьте членов вашей команды, которые будут отвечать на сообщения.
- Добавьте вашего бота в супергруппу.
Таким образом у вас получится «колл центр», где все участники супергруппы смогут отвечать на входящие сообщения.
Ответы на сообщения
Чтобы ответить на входящие сообщения, нажмите Reply (Ответить) или используйте жест — свайп влево.
Если сообщения некоторых пользователей вам показались нежелательными, вы можете отправить их в бан. Ответьте на сообщение командой /ban для пожизненной блокировки пользователя. Для временного ограничения ответьте командой, например, /ban 2d, где «2d» обозначает количество дней. Также допускаются следующие форматы времени: 24h(часы), 365d(дни) или 12m(месяцы).
Приветственное сообщение
По умолчанию приветственное сообщение, которое получает пользователь, запустивший ваш бот, выглядит так:
Напишите ваш вопрос и мы ответим Вам в ближайшее время.
Вы можете изменить его по своему желанию. Нажмите кнопку «Настроить бот» — «Тексты» — выбор языка — «Изменить тексты» и отправьте боту ваш текст приветствия. Чтобы сохранить изменения, нажмите кнопку «Завершить редактирование».
Рассылка
С помощью этого бота вы также сможете отправлять рассылку своим пользователям. Это очень удобно для ответа на одинаковые сообщения или для важных уведомлений.
Перейдите в настройки бота, нажмите кнопку «Рассылка», выберите язык, пользователям которого вы хотите отправить сообщения, и отправьте сам пост. Если все верно, введите команду /done. Когда будете готовы отправить рассылку, введите команду /send.
После окончания вы получите отчет о количестве человек, получивших сообщения и заблокировавших бота.
Статистика
Посмотреть отчет о всех входящих сообщениях и ответах можно в разделе «Статистика».
Источник: www.vamtlgrm.com