Во второй части серии статей по написанию телеграм бота на python, мы добавим функциональность. Бот будет приветствовать новых юзеров, предлагать выбрать и сохранять лиги. Добавим возможность получить результаты по выбранным лигам.
«Рыба» кода бота
Сразу запишем функции в «bot.py», которые понадобятся. Предварительно удалите test_message :
Это не окончательная версия, я мог что-то упустить. В процессе добавим недостающие.
Каждая функция обернута декоратором, так мы общаемся с Телегармом:
Итак. Пользователь нажимает команду старт, получает приветственное сообщение. В нем мы предлагаем выбрать 3 лиги и мониторить результаты по ним. Получить результаты можно командой или кнопкой меню. Так же мы даем возможность изменить выбранные соревнования или удалить свои данные из бота.
Добавление команд в бота
Изначально команды не настроены. Пользователи могут вводить их, но специально меню нет. Для добавления нужно снова написать https://t.me/botfather команду /setcommands . Выберите своего бота и добавьте этот текст:
7 простых правил для управления группой в Telgram | Правило №1 — установите бота модератора в чат
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
Livegrambot — все сообщения в одной группе/чате + рассылка. Telegram BOT/Телеграм бот.
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 превратился также в автоматический инструмент, так как в нём есть большое количество ботов для разных целей — рассылки, поиска людей и информации, агрегаторы контента и другие. Они программируются разработчиками и способны выполнять множество полезных функций. В этой статье мы рассмотрим ботов, которые умеют отправлять сообщения в Telegram, а также узнаем, в чём выгода такого способа рассылок.
Чем хороши рассылки в Telegram?
Сейчас телефон есть у 99% населения, поэтому стали популярны рассылки по СМС. Иногда они даже приходят в виде спама тем, кто не подписывался на них. Но у традиционных СМС сообщений есть пару недостатков. Во-первых, они обходятся дорого. Если отправить одно-два сообщений стоит копейки, то когда речь заходит о рассылках, то отправлять нужно тысячи и десятки тысяч сообщений.
Поэтому и цена становится значительной. Во-вторых, цена увеличивается ещё больше, когда отправить СМС нужно заграницу, в роуминг. Поэтому такие отправки обычно даже не практикуются.
Рассылки в Telegram лишены этих недостатков. Во-первых, они дешёвые. При отправке тратится только небольшое количество интернет-трафика, который недорогой в каждой стране. Во-вторых, для интернета нет границ и отправлять рассылку можно в любую точку мира без изменения стоимости.
Также можно отметить и другое достоинства — сообщения приходят мгновенно и без задержек и с почти стопроцентной доставкой. Это позволяет получать оперативные сведения для статистики рассылки. А ещё в Telegram можно отправлять мультимедиа, а не только текст — картинки, видео, аудиосообщения, и цена при этом не меняется.
Единственный гипотетический недостаток рассылок в Telegram заключается в том, что в некоторых странах этот мессенджер могут запретить. Однако, на данный момент таких стран нет. И попытки запрета уже были, но они оказались неудачными.
Ниже мы рассмотрим ботов, которые позволят делать рассылку в Telegram недорого и оперативно.
Бот для Telegram рассылок
SMSfeedback.ru — это сервис, который специализируется на рассылках через интернет. Поддерживаются отправки в Telegram, Viber, а также традиционные СМС-сообщения на телефон.
Подключить бота для рассылок можно по одному из тарифов. При отправке сообщений в Telegram стоимость будет от 40 до 50 копеек. Цена зависит от первоначального взноса. При минимальной первоначальном взносе 1 рубль, цена за сообщение будет 50 копеек. Если сразу оплатить 11 000 рублей, то цена будет 45 копеек, а если 200 000 рублей — будет 40 копеек за сообщение.
Даже если выбрать самый дорогой тарифный план при цене по 50 копеек за сообщение, то это всё равно получается в 6 раз дешевле, чем отправка традиционных SMS-сообщений. Об этом свидетельствует таблица ниже.
У SMSfeedback есть определённые нюансы, которые следует учитывать при планировании рассылок:
Подробности о рассылке в Telegram через сервис SMSfeedback вы можете узнать на странице официального сайта сервиса. Там вы узнаете актуальные цены, особенности работы рассылки и получить возможность подключить эту рассылку. Кроме того, если у вас возникают какие-либо вопросы по работе с этим инструментом, то там вы найдёте телефоны и другие контакты поддержки.