Если вы являетесь пользователем Telegram, в какой-то момент у вас обязательно был «разговор» с чат-ботом. Обладая удивительной настраиваемостью, боты Telegram предлагают множество преимуществ – будь то автоматизация задач или просто небольшое развлечение с играми в вашей чат-группе.
Хотя для некоторых разработка бота может показаться сложной задачей, на самом деле это не так. При правильном планировании вы можете настроить бота Telegram менее чем за час! Вот как создать простого бота Telegram, который при запросе выводит милые картинки интернет-кошек.
Начиная
В этом руководстве мы собираемся использовать Python 3, библиотеку python-telegram-bot и requests , а также TheCatAPI .
У каждого бота в Telegram есть уникальный токен, который помогает ему общаться с Bot API , чтобы использовать интерфейс обмена сообщениями приложения. Bot API, одна из самых популярных функций Telegram среди разработчиков, позволяет использовать его сообщения в качестве интерфейса.
Рефакторинг и запуск Telegram бота на сервере
Теперь, когда у нас есть все предпосылки, пора переходить к захватывающей части!
Установка библиотек
Если вы используете Windows, откройте командную строку и введите следующие команды:
pip install python-telegram-bot
pip install requests
Если вы используете macOS или Linux, используйте вместо этого следующие команды на своем терминале. Кроме того, в Linux убедитесь, что вы вошли в систему как пользователь с привилегиями sudo.
pip3 install python-telegram-bot
pip3 install requests
Написание программы
Создайте новую папку на своем компьютере и откройте ее в своем любимом редакторе. Создайте новый файл и назовите его main.py. Этот файл будет содержать исходный код вашего бота.
Теперь давайте импортируем библиотеки, которые мы установили ранее, вместе с некоторыми из их встроенных функций.
from telegram.ext import Updater, CommandHandler
import requests
import re
С этого момента программа выполняет доступ к TheCatAPI, получает URL-адрес случайного изображения и отправляет это изображение в чат пользователя.
Начнем с функции получения URL-адреса изображения, что можно сделать с помощью модуля запросов. В этой функции мы загружаем данные JSON случайного файла, предоставленного TheCatAPI, и извлекаем его URL для дальнейшего использования. Чтобы посмотреть формат объекта JSON, перейдите на страницу https://api.thecatapi.com/v1/images/search в своем браузере. Вы заметите что-то вроде этого:
Обратите внимание, что объект JSON – это массив, содержащий словарь. Этот словарь содержит URL с ключом url. Чтобы извлечь URL-адрес, нам нужно указать первый элемент массива, а затем соответствующий ключ.
def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get(‘https://api.thecatapi.com/v1/images/search’)
url = contents[0][‘url’]
return url
Далее нам нужно отправить это изображение в чат пользователя. Для этого нам понадобится URL изображения, а также уникальный идентификатор чата пользователя. Для этого создадим функцию-оболочку. Сначала мы вызываем getUrl () . функция для получения URL-адреса случайного изображения – этот URL-адрес изменяется каждый раз, когда ваша программа выполняет итерацию по функции.
Затем следует получение идентификатора чата пользователя-получателя, который определяет целевое местоположение бота для сообщений, и анализ URL-адреса с помощью встроенной функции send_photo () API бота .
def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)
Чтобы узнать больше о различных встроенных функциях Bot API и о том, как они работают, не стесняйтесь проверить официальную документацию Telegram после этого руководства.
Наконец, давайте создадим функцию, которая контролирует общую работу бота. В этой функции – условно называемой main () – мы отправляем HTTP-запрос в API бота, используя токен, полученный в начале руководства, а затем определяем, как будет выглядеть взаимодействие бота с пользователем. В таком простом случае, как наш, это, по сути, означает запуск бота и вызов функции sendImage () по запросу пользователя.
def main():
updater = Updater(«1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c»)
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler(‘meow’,sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == ‘__main__’:
main()
Ваша окончательная программа должна выглядеть так:
from telegram.ext import Updater, CommandHandler
import requests
import re
def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get(‘https://api.thecatapi.com/v1/images/search’)
url = contents[0][‘url’]
return url
def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)
def main():
updater = Updater(«1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c»)
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler(‘meow’,sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == ‘__main__’:
main()
Ваш собственный Telegram-бот
Поздравляю! Вы создали своего собственного бота для снятия стресса, который по запросу отправляет изображения самых симпатичных интернет-кошек из открытых источников. Попробуйте запустить свою программу и введите / мяу в чате бота, чтобы активировать ее.
Хотя это может быть простой бот с ограниченной функциональностью, он показывает, насколько мощна экосистема разработки ботов Telegram. Вы можете добавить любое количество сложных подпрограмм и функций для улучшения функциональности вашего бота – нет предела. Чтобы узнать больше об удивительных ботах Telegram, созданных участниками на протяжении многих лет, просмотрите наш список полезных ботов Telegram .
Вы также можете найти множество лицензионных программ с открытым исходным кодом для ботов Telegram на таких платформах, как GitHub. Большинство лицензий с открытым исходным кодом позволяют вам использовать, изучать, загружать или изменять исходный код программы.
Разместите свой Telegram-бот онлайн
Теперь, когда ваш бот настроен и работает, попробуйте закрыть main.py на своем компьютере и использовать бота в своем приложении для обмена сообщениями Telegram. Он по-прежнему отвечает на команду / meow ? Нет, это не так.
Как новичок, вы можете быть сбиты с толку, почему main.py на вашем ПК должен быть запущен, если вы уже создали бот, работающий в Интернете. Причина в том, что программа использует ваш компьютер в качестве локального сервера для отправки HTTP-запросов к API, используемым в этой программе.
Таким образом, необходимость запускать программу каждый раз, когда вы хотите использовать приложение, невыполнима и не удобна. Чтобы решить эту проблему, нам нужно удалить зависимость бота от вашего устройства.
Один из способов сделать это – использовать недорогую печатную плату (PCB), такую как Raspberry Pi , для настройки собственного веб-сервера и использования его для запуска вашей программы. Он имеет те же преимущества, что и запуск программы на вашем ПК, без затрат на то, чтобы держать его включенным весь день и ночь, поскольку печатные платы, как правило, имеют значительно меньшее энергопотребление.
Кроме того, вы также можете развернуть свою программу в облаке. Перейдите на платформу хостинга веб-приложений, такую как Heroku, AWS, Google Cloud или Microsoft Azure, и выберите подписку, которая наилучшим образом соответствует вашим потребностям. Мы рекомендуем выбрать бесплатную пробную версию или подписку и обновлять ее по мере увеличения масштаба или объема вашей программы.
Источник: www.istocks.club
smtpsender — маленькая, но гибкая программа для отправки писем из командной строки (с мультиаттачем файлов, поддержкой SSL/TLS и прокси, выполнением скриптов)
Всем привет! В этот раз представляю вашему вниманию небольшую программу для отправки почты из консоли. Она умеет работать через HTTP, Socks4 и Socks5 прокси, поддерживает аттач нескольких файлов, аттач файлов по маске, может запускать другие команды ДО и ПОСЛЕ отправки письма, умеет читать и использовать параметры отправки из файла, чтобы не приходилось каждый раз передавать кучу параметров при вызове программы. Просто иной раз нужно автоматизировать какое-либо действие, а потом получить отчёт по почте, вот тут и бывает порой необходимость в отправке почты из консоли.
Но! Обо всём по порядку)
Получить справку по командам можно указав параметр -h. Вот так оно всё и выглядит:
Какой хостинг и тариф лучше выбрать для Телеграм-бота, его настройка
Каждый начинающий разработчик должен попробовать создать чат-бота. Это полезная практика, которая помогает освоить принципы взаимодействия с API. Процесс создания бота можно поделить на два этапа – написания кода проекта и публикация на удаленном хостинге. Не стоит пренебрегать последним шагом, ведь выбор некачественного хостинга может привести к полной неработоспособности вашего проекта. Расскажем, какой выбрать подходящий хостинг для Телеграм-бота.
Как выбрать хостинг
Предполагаем, что хотя бы поверхностное представление о предназначении хостингов у наших читателей есть. Однако для полноты материала проведем небольшой ликбез по этому вопросу. Хостинг – это удаленный компьютер, который работает 24 часа в сутки (в идеале) и имеет бесперебойный доступ в интернет. Стоит отметить, что Телеграм-боты можно запускать и на компьютерах пользователей.
- компьютер рано или поздно придется выключить;
- мощностей и пропускной способности сети не хватит для ботов, которыми пользуются несколько десятков человек;
- компьютеры с ОС Windows иногда автоматически блокируют работу бота, считая его «неиспользуемым приложением».
Таких изъянов нет у хостингов. Но даже те различаются между собой по нескольким параметрам и критериям. Для выбора подходящего удаленного хостинга рекомендуем следовать критериям ниже:
- Цена. В этом плане поставщики значительно отличаются друг от друга. Например, три разных хостера (поставщик услуг) могут требовать разные цены за одну и ту же услугу.
- Тарифы и их количество. В зависимости от предназначения бота и его загруженности необходимо использовать разные тарифные планы. От них зависит количество выделяемой памяти, пропускная способность сети и прочие технические характеристики. Если ботом будут пользоваться 10 человек, то нет смысла покупать для него продвинутые тарифы. И, наоборот – для популярных ботов нельзя использовать слабые тарифные планы, в которых выделяется от силы 64 мегабайта памяти и скорость в 10 мбит/секунду.
- Поддержка необходимых технологий. Скрипт на Python точно не запустится на сервере, где нет интерпретатора. Список доступных технологий указывается на официальных страницах провайдеров.
- Репутация. Может хостинг и обещает дешевые тарифы с заманчивыми условиями, он может попросту не выполнять свои обязательства. Бывали случаи, когда провайдеры предоставляли одни услуги, а описывали совсем другие. Их быстро выводили на чистую воду гневные пользователи, которые писали отрицательные отзывы на разных сайтах.
- Безопасность. На правильно настроенных серверах все проекты работают отдельно друг от друга, а потому
Есть и другие критерии, например, юридические тонкости и инструменты управления удаленным сервером. Однако не стоит на них зацикливаться, особенно если речь идет о первых ботах, которые не будут использоваться в производственных целях. На основе этих критериев автор составил список наиболее оптимальных для Telegram-ботов хостингов:
Какой тариф использовать
Как мы уже говорили, в плане выбора тарифа надо быть осторожным и всегда искать золотую середину. Тарифы делятся между собой по следующим характеристикам:
- Количество ядер. Этот параметр отвечает за многозадачность, лучше использовать не меньше 2 CPU.
- Количество оперативной памяти. Еще один параметр, отвечающий за многозадачность. Чаще всего даже дешевые тарифы предоставляют 1 ГБ ОЗУ. Этого вполне достаточно для работы бота с низким уровнем активности (то есть тем, которым почти никто не пользуется).
- Количество внутренней памяти, также известный как NVMe. Тут все просто – если бот хранит какие-то большие файлы, то лучше брать тариф с большим количеством NVMe. Если бот вообще ничего не хранит кроме логов и данных пользователей, то можно выбирать тариф с наименьшим количеством внутренней памяти.
- Пропускная способность. От этого параметра зависит то, как быстро ваш проект получит запрос, а также, сколько времени понадобится на отправку ответа.
Стоит отметить, что некоторые хостинг-провайдеры позволяют пользователям самостоятельно настроить характеристики.
Однако большинство из них не поддерживает такой возможности, а предлагает клиентам уже готовые тарифы с неизменяемыми характеристиками.
Настройка хостинга
Одного выбора площадки для размещения бота недостаточно, нужно уметь правильно настраивать ее во избежание потерь производительности, а также для поддержания работоспособности проекта. Большинство хостингов поддерживают только консольную настройку через SSH-подключение. Этого вполне достаточно для подготовки площадки к загрузке бота. Пошаговая инструкция:
- Оформите тариф на аренду VPS-сервера на любом удобном для вас хостинге.
- В личном кабинете найдите данные для входа по SSH.
- Скачайте на компьютер любую программу для подключения по SSH, например, PuTTY. Можно использовать и встроенную в Windows утилиту, однако с ней не всегда удобно работать из-за невозможности сохранять параметры подключения.
- Подключитесь к удаленному серверу через SSH. Для этого введите необходимые данные в соответствующие поля.
- После открытия подключения в командной строке введите следующую команду: «sudo apt —reinstall install python3 -y».
- Дождитесь ее завершения, а после введите «sudo apt —reinstall install python3-pip -y». Эти две команды используются для обновления интерпретатора и менеджера пакетов.
- Загрузите все зависимости (библиотеки, которые нужны для работы проекта).
- Также рекомендуем установить менеджер пакетов. Для этого поочередно включите следующие команды:
sudo apt install nodejs
sudo apt install npm
npm install pm2 -g
На этом процесс настройки сервера завершен.
Загрузка бота на сервер
Сервер готов, проект тоже, теперь осталось соединить их вместе. Сделать это гораздо проще, чем кажется. Обычно провайдеры предоставляют два способа для загрузки файлов – через встроенный в админ-панель файловый менеджер и через FTP-сервер. В случае с ботом мы рекомендуем использовать встроенный менеджер, ведь он намного быстрее справится с небольшими файлами.
- Откройте папку с проектом.
- Откройте файловый менеджер в админ-панели на сайте хостинг-провайдера.
- Создайте через «админку» новую папку.
- Загрузите в нее файлы проекта. Например, timeweb поддерживает функцию drug and drop. Это значит, что пользователю достаточно перетащить файлы проекта в окно браузера, все остальное сделает сайт.
Запуск
Последний шаг – это запуск бота. Для того чтобы выполнить его, достаточно ввести только две команды:
- cd *название созданной папки*.
- pm2 start main.py —interpreter=python3. Вместо main укажите название исполняемого файла.
Источник: it-tehnik.ru