Напишем простой Telegram-бот на Python с использованием aiogram, Docker и AWS, предварительно ознакомившись с нужными инструментами.
Напишем простой диалоговый Telegram-бот на Python, который в дальнейшем можно дополнить различными функциями, и задеплоим его.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
Настройка
- свой токен;
- адрес Telegram API (https://api.telegram.org/bot);
- ссылку на документацию.
Обязательно сохраните токен, так как это ключ для взаимодействия с ботом.
Примечание Хранение токена должно быть локальным: ни в коем случае не выгружайте его в общий доступ, например в GitHub-репозиторий .
Далее начните беседу. Введите в поисковой строке имя бота и нажмите /start . Отправьте любое сообщение: оно станет первым обновлением, которое получит Телеграм бот.
Установка Python
Для написания Telegram-бота на Python, нужно установить сам язык. Если вы пользуетесь Windows, скачать Python можно с официального сайта. Версия важна. Нам подойдет Python не ниже версии 3.7. Если же у вас Linux или macOS, то, скорее всего, у вас стоит Python 3.6. Как обновиться, можете почитать здесь.
Как оформить бот магазин в Телеграме за 5 минут с нуля
Тем, кто только начал изучение этого языка, будет также полезна дорожная карта Python-разработчика.
Установка pip
Это менеджер пакетов. В версиях выше Python 2.7.9 и Python 3.4, а также на macOS/Linux он уже есть. Проверить это можно командой pip —version в терминале. Если же по каким-то причинам он отсутствует, установить его можно при помощи команды:
$ sudo apt-get install python-pip
Установка aiogram
Установить данный фреймворк для Telegram Bot API с помощью pip:
pip install aiogram
Hello, bot!
Давайте напишем простенькую программу приветствия. Для начала следует импортировать библиотеки и создать экземпляры Телеграм бота и диспетчера:
from aiogram import Bot, types from aiogram.dispatcher import Dispatcher from aiogram.utils import executor TOKEN = «ваш токен от бота здесь» bot = Bot(token=TOKEN) dp = Dispatcher(bot)
Теперь напишем обработчик текстовых сообщений, который будет обрабатывать входящие команды /start и /help :
Добавим ещё один обработчик для получения текстовых сообщений. Если бот получит «Привет», он также поздоровается. Все остальные сообщения будут определены, как нераспознанные:
Запускаем Telegram бота, написанного на Python, следующим образом:
if __name__ == ‘__main__’: executor.start_polling(dp)
Примечание Так мы задаём боту непрерывное отслеживание новых сообщений. Если бот упадёт, а сообщения продолжат поступать, они будут накапливаться в течение 24 часов на серверах Telegram, и в случае восстановления бота прилетят ему все сразу.
Ну вот и всё, простенький бот в Телеграмме на языке Python готов.
Docker
Сейчас мало кто не слышал про Docker, но если вдруг не слышали — вот хорошая статья. Для нашего проекта потребуется самый простой Dockerfile:
FROM python:3.8 # set work directory WORKDIR /usr/src/app/ # copy project COPY . /usr/src/app/ # install dependencies RUN pip install —user aiogram # run app CMD [«python», «bot.py»]
Каталог проекта должны при этом содержать следующие файлы:
Для локальных тестов достаточно установить Docker (linux, mac, windows), после чего в папке проекта собрать и запустить контейнер с помощью команд:
docker build -t my_app docker run -d my_app
my_app — это просто название нашего контейнера, вместо которого можно использовать другое имя.
-d — специальный флаг, который запускает контейнер в фоне и позволяет дальше работать в терминале. Это называется detached mode.
Деплой на AWS
Прежде всего нам понадобится аккаунт на Docker Hub. Это аналог GitHub, только не с исходниками кода, а с уже созданными контейнерами. Работа с Docker Hub выглядит достаточно просто:
- Локально или с помощью пайплайнов собрали контейнер.
- Загрузили его на докер хаб.
- В любом удобном месте скачали его. Это может быть локальная машина, VPS сервер или облачный провайдер по типу AWS.
- Запустили.
Пройдёмся по этим шагам. Везде, где указано , надо вставлять свой юзернейм, использованный при регистрации на докерхабе. Если это ваша первая публикация на докерхаб, для начала потребуется залогиниться с помощью docker login.
docker build -t /my_app
Загружаем его на докерхаб:
docker push /my_app
Для проверки успешности загрузки можете запустить контейнер из Docker Hub с помощью команды:
docker run -d /my_app
Далее загрузим наш контейнер в AWS Elastic Beanstalk. Для этого потребуется аккаунт на AWS. Если его нет, необходимо зарегистрироваться. Вас попросят ввести данные карты для верификации, но переживать не стоит, ведь мы воспользуемся бесплатным годовым триалом. Чтобы поиграться, этого более чем достаточно, а вот если вы захотите вывести проект в продакшен, следует перейти на VPS — это даст больше контроля и гибкости.
- Переходим в Elastic Beanstalk, на вкладку Applications, и создаём новое приложение:
- Называем приложение, теги оставляем пустыми:
- Создаём для приложения environment:
- Выбираем Worker environment:
- В качестве платформы выбираем Docker:
- В пункте Application code нужно загрузить JSON-файл с конфигурацией Docker-образа. Сам файл:
Dockerrun.aws.json < «AWSEBDockerrunVersion»: «1», «Image»: < «Name»: «/my_app», «Update»: «true» >, «Ports»: [ < «ContainerPort»: 5000, «HostPort»: 8000 >] >
- Создаём окружение:
- AWS начинает создавать окружение, просто ждём завершения процесса:
- Если всё прошло успешно, вы увидите индикатор успешного запуска приложения:
Проверяем работу нашего Telegram bot:
Заключение
Поздравляем! Теперь вы знаете, как писать роботов для Telegram на Python.
Бота можно дополнять другими функциями, например, добавить отправку файлов, опрос или клавиатуру.
Кстати, в телеграмме есть аж целых два типа клавиатур:
- Классическая RelpyKeyboardMarkup, у которой кнопки располагаются под полем ввода сообщения:
- Более современная InlineKeyboardMarkup, которая привязывается к конкретному сообщению:
Но и это полностью рабочий Телеграм-бот на Python: дополните словарём, и получите полноценную беседу. Также можете опробовать функциональность нашего Telegram-бота.
В «настоящих проектах» не обойтись без базы данных. Тут на помощь приходит docker-compose, который позволяет объединить несколько контейнеров в один сервис. Таким образом, например, можно создать приложение и положить его в контейнер, а базу данных, как отдельный сервис, поместить в другой контейнер, и с помощью docker-compose наладить между ними связь.
Также для более серьёзной разработки лучше использовать выделенный виртуальный сервер (VPS): он даёт гораздо больше гибкости и свободы, чем тот же AWS. А самое главное, он более приближён к «боевой» разработке. Схема работы тут будет даже проще, чем с AWS: вам просто нужно установить Docker, спуллить образ с Docker Hub и запустить его.
Следите за новыми постами по любимым темам
Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.
Источник: tproger.ru
TelegramRC Bot – Удалённое управление ПК через telegram
TelegramRC Bot позволяет управлять ПК дистанционно через мессенджер telegram.
Особенности:
- Управлять могут только указанные в программе пользователи
- Сворачивание в трей
- Поддержка команд как со слешем, так и без, поддержка аргументов для команд
- Поддержка кнопок
- Автоматическое переподключение при потере связи
- Открытый исходный код, разработчики могут добавлять свои функции
- Работа с прокси * (работают только HTTP прокси без авторизации)
- Можно загрузить файл на ПК через telegram
Скачать программу
Скачать «TelegramRC.exe» Загрузок: 2496 array(64) < [0]=>string(6) «exists» [1]=> string(6) «get_id» [2]=> string(6) «set_id» [3]=> string(9) «get_title» [4]=> string(9) «set_title» [5]=> string(9) «the_title» [6]=> string(8) «get_slug» [7]=> string(8) «set_slug» [8]=> string(10) «get_status» [9]=> string(10) «set_status» [10]=> string(10) «get_author» [11]=> string(10) «set_author» [12]=> string(14) «get_the_author» [13]=> string(10) «the_author» [14]=> string(15) «get_description» [15]=> string(15) «set_description» [16]=> string(11) «get_excerpt» [17]=> string(11) «the_excerpt» [18]=> string(15) «get_the_excerpt» [19]=> string(11) «set_excerpt» [20]=> string(16) «is_redirect_only» [21]=> string(17) «set_redirect_only» [22]=> string(11) «is_featured» [23]=> string(12) «set_featured» [24]=> string(15) «is_members_only» [25]=> string(16) «set_members_only» [26]=> string(18) «get_download_count» [27]=> string(18) «set_download_count» [28]=> string(9) «get_image» [29]=> string(9) «the_image» [30]=> string(17) «the_download_link» [31]=> string(21) «get_the_download_link» [32]=> string(11) «has_version» [33]=> string(11) «get_version» [34]=> string(11) «set_version» [35]=> string(27) «get_version_id_version_name» [36]=> string(14) «version_exists» [37]=> string(15) «get_version_ids» [38]=> string(12) «get_versions» [39]=> string(8) «get_post» [40]=> string(8) «set_post» [41]=> string(25) «get_the_short_description» [42]=> string(21) «the_short_description» [43]=> string(13) «redirect_only» [44]=> string(13) «get_the_title» [45]=> string(13) «get_the_image» [46]=> string(18) «the_download_count» [47]=> string(22) «get_the_download_count» [48]=> string(17) «get_file_versions» [49]=> string(20) «get_file_version_ids» [50]=> string(14) «get_version_id» [51]=> string(16) «get_file_version» [52]=> string(22) «get_the_version_number» [53]=> string(18) «the_version_number» [54]=> string(18) «has_version_number» [55]=> string(16) «get_the_filename» [56]=> string(12) «the_filename» [57]=> string(17) «get_the_file_date» [58]=> string(16) «get_the_filesize» [59]=> string(12) «the_filesize» [60]=> string(12) «get_the_hash» [61]=> string(8) «the_hash» [62]=> string(16) «get_the_filetype» [63]=> string(12) «the_filetype» > > —>
Скриншоты программы (v 2.1)
Установка программы
FAQ
Создание бота telegram
(Все шаги подробно описаны в видео)
Управление ботом. Команды.
Бот принимает команды как со слешем в начале, так и без него, т.е. /help и help это одна и та же команда.
Аргументы команды можно передать через знак пробел, если аргумент содержит знак пробел, нужно обрамить его в двойные кавычки; чтоб сделать команду кликабельной, можно вместо пробела использовать “__” (два знака нижнее подчёркивание) например:
/ screenshot 1
/ screenshot__1
/ exec «cmd.exe /c ping 8.8.8.8»
Описание команд
* Команды, обозначенные значком работают только под ОС Windows. Их работа может быть некорректна на некоторых устройствах.
Общее
- / start – Приветствие бота
- / help – Справка. Содержит описание команд. Показывает клавиатуру для управления.
- / whoami – Показывает имя текущего пользователя и его id
- / ip – Показывает внешний IP, Geo-IP информацию и MAC адрес
- / browse [ url ] – Открывает ссылку (поддерживаются http и https ссылки) в браузере по умолчанию
- / alert [ message ] – Показывает сообщение на ПК
- / uptime – Показывает время работы программы и для системы windows – время работы ПК
Система
- / systeminfo – Показывает информацию о системе
- / exec [ cmd ] – Выполняет системную команду, например, / exec «cmd.exe /c ping 8.8.8.8»
Файловая система
- / cd – Показывает путь к текущей директории
- / cd [ path ] – Сменить директорию. Здесь и в других командах в [ path ] может содержаться как абсолютный, так и относительный путь.
- / ls – Отображает содержимое текущей директории
Дополнительно отображаются краткие команды для перехода к определенной директории или файлу. - / ls [ path ] [ selectBy = name ] – Отображает содержимое указанной в [ path ] директории. Здесь и в других командах параметр [ selectBy ] необязательный и был добавлен для укорочения команд. Его возможные значения – name(по умолчанию) и num. В некоторых случаях имя файла и/или путь может быть слишком длинным, и полный путь неудобно указывать в команде, тогда вместо полного пути/имени файла можно указать порядковый номер файла и передать аргумент num.
Например, как указано на скрине, к папке backup_wowanbelousov можно обратиться как / ls «backup_wowanbelousov» , а можно и так / ls 2 num , т.к. она вторая по списку. - / file [ path ] [ selectBy = name ] – Отображает информацию о файле и доступные операции
- / download [ path ] [ selectBy = name ] – Скачать файл (бот отправляет файл в диалог)
- / delete [ path ] [ selectBy = name ] – Удалить файл с ПК
- / print – Отправляет файл на печать (используется принтер по умолчанию, необходимо наличие установленного Microsoft Word)
Таймеры
Используются для выполнения команд через определенный промежуток времени
- / timers – Отображает список работающих таймеров
- / timer [ after ] [ command ] – Создаёт новый таймер. [ after ] – время, через которое будет выполнена команда, например, 1s, 1m 10s, 1h 10m 20s. [ command ] – текст команды, можно с пробелами. Например, / timer 30s / alert Hello World !
Media
- / screens – Отображает список экранов и их расположение + кнопки для создания скриншотов
- / screenshot [ n = 0 ] – Делает скриншот. Если не указан номер экрана [ n ] , то выбирается экран по умолчанию.
- / cameras – Отображает список web-камер + кнопки для снимков
- / photo [ n = 0 ] – Делает снимок с камеры. Если не указан номер камеры [ n ] , то выбирается камера по умолчанию.
- / volume – Отображает уровень громкости от 0 до 100. (работает не на всех устройствах)
- / volume [ level ] – Установить уровень громкости. Значение [ level ] может быть от 0 до 100 либо “up”, “down”, “+”, “-“
- / brightness – Отображает уровень яркости от 0 до 100. (работает не на всех устройствах)
- / brightness [ level ] – Установить уровень яркости. Значение [ level ] может быть от 0 до 100.
Клавиатура
- / keyboard – Показывает клавиатуру с некоторыми клавишами и сочетаниями
- / key [ code ] – Нажать клавишу (можно передать несколько – сочетание клавиш). Например, / key back_space , / key windows a , / key control shift escape
- / key [ media_code ] – На системе windows работают некоторые медиа клавиши: play, stop, next, prev
- / media – Отображает клавиатуру с медиа-клавишами
Hardware
- / ram – Отображает оперативную память, занимаемую ботом. На ОС Windows отображает количество всей свободной и занятой RAM на ПК.
- / battery – Отображает данные о съёмном аккумуляторе (если такой имеется).
- / temperature – Отображает данные с датчиков температуры (если такие имеются и если есть права доступа к ним)
Питание
- / reboot – Выполняет перезагрузку ПК
- / shutdown – Выключает ПК
Перед выключением или перезагрузкой ПК отображается соответствующее уведомление c таймером.
Разработчикам
Репозиторий GitHub
Информация о сборке находится в файле readme.
Добавление своих команд
Команды определены в файле проекта /main/modules/Commands.php. Например, команде /help соответствует метод __help.
Источник: tssaltan.top
Как сделать телеграм бота автономным
Телеграм боты стали популярными инструментами для автоматизации задач и общения с пользователями. Они могут быть полезными в различных сферах, от бизнеса до личного использования. Однако, по умолчанию, телеграм боты работают только при активном соединении с сервером. Но что, если вы хотите сделать вашего бота автономным, чтобы он мог работать без постоянного подключения к серверу? В этой статье мы рассмотрим несколько простых шагов и рекомендаций для достижения этой цели.
Первый шаг к сделать телеграм бота автономным — это развернуть его на собственном сервере. Вы можете использовать облачные сервисы, такие как Amazon Web Services (AWS) или Google Cloud Platform (GCP), чтобы развернуть свой бот и создать виртуальную машину, на которой он будет работать. Кроме того, вам необходимо зарегистрировать вашего бота в Телеграм и получить токен для доступа к его API.
Далее, вам нужно настроить ваш сервер для работы с телеграм ботом. Вы можете использовать различные фреймворки и библиотеки, такие как Flask или Telebot, чтобы обеспечить связь между вашим сервером и API Телеграм. Вы должны настроить обработчики (handlers) для различных событий (например, получение сообщения, команды от пользователя) и написать логику, которую ваш бот будет выполнять в ответ на эти события.
Главное преимущество сделать телеграм бота автономным — это его способность работать независимо от вашего активного присутствия или доступа к серверу. Это означает, что ваш бот может продолжать выполнять задачи и общаться с пользователями, даже когда вы отсутствуете или не имеете интернет-соединения.
Важным аспектом создания автономного телеграм бота является обеспечение безопасности вашего сервера и ваших данных. Вы должны установить соответствующие механизмы аутентификации и авторизации, чтобы предотвратить несанкционированный доступ к вашему боту и защитить ваши данные и чувствительную информацию. Кроме того, важно регулярно обновлять ваш сервер и используемые библиотеки, чтобы устранять уязвимости и предотвращать атаки.
Как сделать телеграм бота автономным
1. Установите необходимые зависимости. Для работы телеграм бота в автономном режиме вам понадобятся определенные библиотеки. Ознакомьтесь с документацией Telegram API и установите необходимые зависимости с помощью пакетного менеджера вашего языка программирования.
2. Настройте вебхук. Вебхук — это механизм, который позволяет вашему боту получать обновления от Telegram API. Создайте веб-сервер и установите его URL в настройках бота. Веб-сервер будет слушать обновления и передавать их боту для обработки.
3. Создайте логику работы бота. Реализуйте логику работы бота, включая обработку входящих сообщений, отправку ответов и выполнение операций, связанных с вашим приложением или сервисом.
4. Обновляйте бота регулярно. Используйте цикл обновления, чтобы регулярно проверять наличие новых сообщений и обрабатывать их. Не забывайте также обновлять состояние вашего бота и сохранять данные, если это необходимо.
5. Обрабатывайте исключения. Учтите возможность возникновения ошибок в работе вашего бота. Добавьте обработку исключений, чтобы предотвратить прерывание работы и обеспечить стабильность бота.
6. Тестируйте автономность бота. Проверьте работу вашего бота в автономном режиме. Отправьте тестовые сообщения и убедитесь, что бот корректно обрабатывает их и отвечает на них без участия разработчика.
Помните, что автономность телеграм бота требует строгой реализации и обеспечения его надежности. Следуйте шагам и рекомендациям, описанным в этом разделе, чтобы успешно сделать вашего телеграм бота автономным.
Понимание понятия «автономность телеграм бота»
Автономность телеграм бота относится к его способности функционировать и выполнять задачи без необходимости постоянного участия оператора или вмешательства извне. То есть, автономный телеграм бот способен самостоятельно принимать решения и выполнять действия на основе предустановленных правил и алгоритмов.
Основная задача создания автономного телеграм бота — обеспечить его возможность функционирования и взаимодействия с пользователями в автоматическом режиме. Это позволяет значительно упростить использование бота и снизить нагрузку на оператора.
Для достижения автономности, телеграм боту необходимо быть оснащенным не только базовыми функциями обработки сообщений, но и средствами анализа и обработки данных. Это позволяет боту распознавать и понимать различные типы сообщений, адаптировать свои ответы к контексту и действовать на основе заданных алгоритмов.
Важным аспектом автономности телеграм бота является его способность обучаться и улучшаться по мере взаимодействия с пользователями. Например, бот может анализировать и запоминать предпочтения пользователей, а также собирать и анализировать данные для повышения своей эффективности.
В целом, автономность телеграм бота обеспечивает более удобное и эффективное взаимодействие с пользователями, позволяя им получать ответы на свои вопросы или выполнять определенные действия в любое время, без необходимости ожидать реакции оператора.
Использование платформы для разработки автономных ботов
В настоящее время существует множество платформ и инструментов, которые позволяют создавать автономных ботов для различных целей. Эти платформы предоставляют набор функций и инструментов, которые значительно упрощают процесс разработки и поддержки бота.
Одной из самых популярных платформ для разработки автономных ботов является Telegram Bot API. Эта платформа предоставляет разработчикам мощный и гибкий API, который позволяет создавать ботов с различными функциями и возможностями.
Для начала работы с Telegram Bot API необходимо зарегистрировать бота и получить от платформы токен доступа. Этот токен необходим для авторизации бота при общении с платформой.
Помимо Telegram Bot API, существуют и другие платформы, такие как Facebook Messenger Platform, Slack API и Microsoft Bot Framework, которые также предоставляют возможности для разработки автономных ботов.
На этих платформах разработчики могут создавать ботов с использованием различных языков программирования, таких как Python, JavaScript, Java и других. Они также могут использовать готовые библиотеки и фреймворки, которые значительно упрощают процесс разработки и обеспечивают высокую производительность и гибкость ботов.
Кроме того, платформы для разработки автономных ботов предоставляют различные инструменты для управления и мониторинга ботов, такие как панели управления, аналитические инструменты, системы уведомлений и многое другое. Эти инструменты помогают разработчикам эффективно управлять и настраивать своих ботов в соответствии с требованиями пользователей.
Telegram Bot API | Python, JavaScript, Java | python-telegram-bot, telegraf, telegram-bot-sdk |
Facebook Messenger Platform | PHP, JavaScript, Python | messenger-php, botpress, py-messenger-bot |
Slack API | Python, JavaScript, Ruby | slack-api, slack-ruby-bot, botpress-slack |
Microsoft Bot Framework | C#, JavaScript, Python | botbuilder, botpress, py-botbuilder |
Использование платформы для разработки автономных ботов значительно упрощает процесс создания и поддержки бота, позволяет разработчикам сосредоточиться на реализации бизнес-логики и предоставляет множество инструментов для управления и мониторинга ботов.
Установка и настройка необходимых компонентов
Прежде чем сделать телеграм бота автономным, необходимо установить и настроить несколько компонентов, чтобы ваш бот мог функционировать автономно. Вот несколько шагов, которые вам потребуются для этого:
- Установите Python и pip: Python является основным языком программирования для создания телеграм ботов, а pip — инструментом установки сторонних библиотек.
- Создайте новый проект в вашей рабочей среде: проект должен содержать все необходимые файлы и зависимости для вашего бота.
- Установите библиотеку python-telegram-bot с помощью pip: эта библиотека предоставляет удобные возможности для создания и управления телеграм ботами.
- Получите идентификатор вашего бота от BotFather и настройте его в вашем проекте: вы должны получить уникальный токен вашего бота, который будет использоваться для аутентификации и обмена данными с телеграм платформой.
- Настройте обработчики для команд и сообщений вашего бота: вы можете определить специфическое поведение вашего бота для различных команд, сообщений и событий.
- Настройте и запустите своего бота на сервере или виртуальной машине: ваш бот должен быть доступным для телеграм платформы, чтобы он мог принимать и обрабатывать входящие запросы.
Столкнувшись с трудностями или неопределенностями в процессе установки и настройки необходимых компонентов, вы всегда можете обратиться к документации и справочным ресурсам, которые предоставляются сообществом разработчиков.
Создание базы знаний для бота
Чтобы сделать телеграм бота автономным и способным предоставлять информацию пользователю без участия разработчика, необходимо создать базу знаний для бота.
База знаний — это коллекция данных или информации, которая хранится и организована таким образом, чтобы бот мог быстро и эффективно извлекать нужную информацию в ответ на запрос пользователя.
Создание базы знаний для бота включает в себя следующие шаги:
- Идентификация тематических областей, в которых бот должен быть компетентен.
- Сбор и организация информации внутри каждой тематической области.
- Структурирование информации, чтобы она легко и быстро могла быть извлечена.
- Проверка и обновление базы знаний по мере необходимости.
При создании базы знаний важно выбирать источники информации с доверенными и проверенными данными. Также рекомендуется использовать структурированные форматы данных, такие как JSON или CSV, чтобы облегчить доступ и обработку информации.
Важно помнить, что база знаний бота должна быть гибкой и поддерживать различные типы запросов от пользователей. Это может включать поиск по ключевым словам, задание вопросов, запросы на конкретные темы и т.д.
Источник: uchet-jkh.ru