Во второй части серии статей по написанию телеграм бота на python, мы добавим функциональность. Бот будет приветствовать новых юзеров, предлагать выбрать и сохранять лиги. Добавим возможность получить результаты по выбранным лигам.
«Рыба» кода бота
Сразу запишем функции в «bot.py», которые понадобятся. Предварительно удалите test_message :
Это не окончательная версия, я мог что-то упустить. В процессе добавим недостающие.
Каждая функция обернута декоратором, так мы общаемся с Телегармом:
Итак. Пользователь нажимает команду старт, получает приветственное сообщение. В нем мы предлагаем выбрать 3 лиги и мониторить результаты по ним. Получить результаты можно командой или кнопкой меню. Так же мы даем возможность изменить выбранные соревнования или удалить свои данные из бота.
Добавление команд в бота
Изначально команды не настроены. Пользователи могут вводить их, но специально меню нет. Для добавления нужно снова написать https://t.me/botfather команду /setcommands . Выберите своего бота и добавьте этот текст:
5 урок, телеграм бот не работает
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 объявили иностранным сервисом. Вот почему это плохо
Решение Роскомнадзора запрещает интеграцию приложения с платежными организациями.
Дата публикации: 23 января 2023
Редактор TexTerra
Время чтения: 4 минуты
Александр Хлынов Редакция «Текстерры»
В субботу 21 января Роскомнадзор внес Telegram в реестр иностранных сервисов, которым с 1 марта 2023 года будет запрещена интеграция с российскими банками. То есть, речь идет о запрете для банков размещать свои платежные боты в Telegram.
В условиях, когда магазины приложений (App Store и Google Play) удаляют ПО российских компаний, финансовые организации ищут возможности остаться удобными для клиентов. Они размещают приложения на своих сайтах, расширяют возможности личных кабинетов клиентов, выходят с платежными ботами в мессенджеры…
Их поддерживают и магазины, давая возможность людям оплачивать покупки с телефона, без использования карт – через QR-код на экране платежного терминала или с помощью такого же QR-кода, но распечатанного терминалом на кассовой ленте.
Видя сложности, возникшие у российских пользователей и банков, Telegram начал развивать платежный функционал для бизнеса.
Словом, бизнес, как всегда, решает проблему удобными для пользователей способами.
В частности, на прошлой неделе банк ВТБ запустил чат-бота в Telegram, с помощью которого можно перевести деньги по номеру телефона, проверить баланс на счетах и вкладах и оплатить телефон. Ботом ВТБ в первые же сутки воспользовались 40 тысяч человек, а самой востребованной услугой стали денежные переводы через систему быстрых платежей.
Вероятно, возможности бота постепенно бы расширялись, но не после решения Роскомнадзора, озвученного в минувшие выходные. В такой же ситуации оказались ПСБ и Альфа-банк.
Запрет на интеграцию касается не только банков. Согласно принятым поправкам к закону «Об информации», подготовленным депутатом Антоном Горелкиным, с 1 марта 2023 года подключать службы денежных переводов через иностранные сервисы будет запрещено всем. Госструктурам же будет запрещено пересылать через такие мессенджеры личные данные, информацию о платежах и банковских счетах.
Эксперты объясняют, что интеграция не подразумевает выход операций на сервера мессенджеров. Как рассказал старший вице-президент ВТБ Никита Чугунов, никакая информация, являющаяся банковской тайной, через мессенджеры не передается – все операции «остаются внутри защищенной системы банка».
Михаил Манченко,project-менеджер TexTerra:
«Проблема в том, что ВТБ в Telegram нельзя назвать интеграцией, так как клиенты им пользуются не через сам чат Телеграма, а через web-приложение, которое находится в нём:
То есть это сайт внутри Telegram, который не пересылает в чат какие-либо данные – все операции проходят через ВТБ, а не через Telegram (он просто не может видеть, что происходит в приложении), поэтому сложно понять, что именно подразумевается под интеграцией».
На отсутствие важных уточнений в законе, которые хоронят всю проделанную Телеграмом и банками работу, указывает и руководитель практики интеллектуальной собственности юридической фирмы DRC Владимир Ожерельев: запрет «не оставляет лазеек по использованию Telegram даже для вспомогательных банковских сообщений».
Напомним, что у нас в TexTerra любая компания может заказать приложение и подключить его к боту в Telegram.
В Телеграме есть несколько платежных ботов, которые можно было использовать. Такие же возможности есть в WhatsApp, Messenger и Viber. Но не для России (запрет действует со стороны разработчиков и владельцев этих мессенджеров). Так куда же теперь банкам и другим организациям переносить свои платежные приложения?
Михаил Манченко,project-менеджер TexTerra:
«Организовать платежи внутри чатов можно не только в упомянутых мессенджерах. Ближайший вариант интеграции – это ВКонтакте и принадлежащая ему соцсеть Одноклассники».
Источник: texterra.ru