Как выключить бота Телеграм python

Как я и говорил в своей первой записи, на страницах этого дневника я собираюсь написать немного буковок на тему создания роботов (или ботов, как тебе нравится?) в Telegram. Собственно говоря, для создания таковых, я сам использую Python третьей версии, из чего следует то, что рассказывать буду я именно о Python.

Кто такие роботы и зачем они нужны

На самом деле роботы могут делать очень много интересных вещей, начиная рассылкой погоды, новостей, записей из ВКонтакте, поиском и скачиванием книг, музыки… в общем потенциал роботов ограничен разве что фантазией разработчика и API Telegram для ботов (последний ну очень уж богат возможностями).

К чему я всё это? Чтобы сложить небольшое представление о том, что мы будем делать дальше. Робот — это программа, написанная, кстати сказать, на любом языке программирования, и запущенная на каком-нибудь сервере (или на компьютере разработчика, в крайнем случае).

Пришло время начинать

Итак, для того, чтобы сделать своего первого робота, тебе потребуются:

Пишем TELEGRAM бота на Python

  • Компьютер (ну а как же без него?) на macOS, Linux или Windows;
  • Telegram, желательно также на компьютере, можно воспользоваться веб-версией, если лень скачивать;
  • Python 3 и менеджер пакетов pip для него (всё это мы будем устанавливать ниже, не переживай).

Если всё готово, есть хотя бы компьютер и Telegram, то можем начинать.

Устанавливаем Python 3

Python 3 по-разному устанавливается на разные OS (уж простите за тавтологию), поэтому ниже тебе нужно найти твою OS.

Если у тебя macOS

Отправляемся на официальный сайт Python и загружаем (можешь нажать прямо здесь) .pkg установщик последней стабильной версии Python 3.5.2. Запускаем и устанавливаем Python на наш компьютер. После завершения установки можно открыть Terminal и попробовать выполнить команду python3 . Если всё установилось правильно (как на картинке ниже), то у тебя на macOS теперь можно смело начинать программировать на Python.

Выполнение команды python3 на macOS.

Менеджер пакетов pip устанавливается автоматически вместе с Python3, выполнение команды pip3 -V должно вывести в терминал следующее:

Где вместо 8.1.2 будет указана твоя версия pip .

Если у тебя Windows

Переходим на официальный сайт Python и выбираем нужную нам версию 3.5.2: для 32-разрядных или версию для 64-разрядных систем (зависит от твоего компьютера; узнать разрядность можно, открыв Проводник — Этот компьютер — и по нажатию на правую кнопку мыши выбрать пункт Свойства).

Когда мы скачали нужную версию Python, запускаем установщик. Важно: на самом первом этапе установки необходимо отметить Add Python 3.5 to PATH , это очень упростит нашу работу в будущем. Затем нажимаем на Install now и ждём окончания установки.

Установка Python 3 на Windows.

Чтобы проверить, правильно ли установился Python, открываем меню Пуск и в строке поиска набираем командная строка (в Windows 10 открыть поиск можно, просто нажав на лупу рядом с кнопкой Пуск).

В открывшемся окне командной строки выполняем команду python . В ответ должна открыться консоль Python (начинается с >>> ) как на картинке ниже.

Запуск Python из командной строки Windows.

Выполняем команду exit() , чтобы выйти из режима интерпретатора Python. Менеджер пакетов pip так же должен быть установлен, чтобы проверить, выполни команду pip -V . В ответ в консоли должна отобразиться версия pip :

В Linux и другие Unix-системы Python 3.5 устанавливается аналогично macOS.

Таким образом, мы подготовили наш компьютер для программирования и исполнения программ на Python 3.

Подготавливаем Python для создания роботов

Что такое «менеджер пакетов pip » и для чего он нужен нам, спросишь ты. Так вот, менеджер пакетов — это такая утилита, с помощью которой можно скачивать (и сразу устанавливать) различные модули для Python. В macOS нужно использовать команду pip3 вместо pip (команда pip здесь используется для встроенной версии Python 2.7).

Возвращаемся в терминал (или в командную строку) и выполняем следующую команду:

Что здесь просиходит? Мы обращаемся к pip (помни: в macOS это pip3 ) и хотим установить ( install ) волшебный модуль pyTelegramBotAPI , который и отвечает за создание и работу ботов.

Устанавливаем pyTelegramBotAPI

Если модуль успешно установился, то мы должны увидеть надпись Successfully installed pyTelegramBotAPI-x.x.x . Собственно говоря, существует множество других модулей для Python (и не только), с помощью которых можно быстро запустить Telegram-бота; простыми словами pyTelegramBotAPI — это такой «конструктор», в котором содержатся все необходимые нам компоненты-«кубики».

Можно переходить к самой интересной части — написанию кода нашего робота.

Пишем код нашего первого робота

Для того, чтобы писать код, нам понадобится редактор. Можно, конечно, воспользоваться и Блокнотом, но лично я бы не советовал. Лучше всего скачать бесплатный редактор Atom от создателей GitHub. Или Sublime Text 3 (но он платный, вроде бы). Я пользуюсь Sublime Text, и писать код буду в нём.

Еще по теме:  Телеграмм каналы об экономике России топ лучших

Ну, а тебе уж решать самому.

Перво-наперво подключаем модуль telebot , который мы установили с помощью pip . Делаем это так:

Регистрирация робота в Telegram.

Если логин никем не занят, то Bot Father отпавит нам сообщение об успешном создании нового бота. Всё, что нам нужно узнать из полученного сообщения — длинную строку, TOKEN бота. Это ключ, с помощью которого мы сможем управлять нашим роботом через Python.

В моём примере ключ: 242589731:AAGDz-F8q5TN0IfD3Y_D4WB0BmerHm1UYiw . Можешь не пытаться его использовать, он уже обновлён ?

Возвращаемся в текстовый редактор, и добавляем следующую строку, где присваиваем переменной TOKEN наш ключ-строку:

Теперь можно создать объект нашего робота, так и назовём его — bot . В аргументах указываем ключ для аутентификации в Telegram:

Отлично, мы зарегистрировали бота и смогли передать его управление Python.

А сейчас нужно подумать (а может, думать надо было с самого начала?) о том, что будет делать наш робот. Поскольку эта запись посвящена созданию «первого» робота в Telegram, я думаю, не стоит делать нашего бота очень сложным.

Пусть будет так: когда кто-то запускает робота, то робот спрашивает имя пользователя, и после того, как получает имя, приветствует его.

Наша библиотека pyTelegramBotAPI (модуль для Python) поддерживает обработчики (или хэндлеры), с помощью которых можно научить робота отвечать на различные сообщения. Подробнее об обработчиках можно почитать здесь. Создадим обработчик, который будет отвечать на команду /start (эта команда соответствует нажатию кнопки Start или Запустить в профиле бота в Telegram); внутри обработчика создадим функцию, в которой будем спрашивать пользователя его имя.

Объясню каждую строку кода:

  1. Обработчик, который отвечает на команду /start (или любые другие, какие указаны в списке);
  2. Функция в обработчике, которая спрашивает у пользователя его имя;
  3. В переменную sent записывается объект отправленного текстового сообщения с вопросом «Как тебя зовут?»; первый аргумент функции send_message — уникальный ID пользователя Telegram (получаем его из предыдущего сообщения message.chat.id ), который обратился к нашему боту, и которому нужно отправить сообщение; второй аргумент — строка, текст сообщения;
  4. Функция register_next_step_handler , принимающая в аргументы объект отправленного сообщения и имя следующей функции hello отвечает за то, что следующее сообщение от пользователя будет обработано функцией hello .

Далее создадим саму функцию hello , в которой и будем приветствовать нашего дорогого пользователя:

  1. Создаём функцию (в аргументы, кстати, и hello и start принимают объект входящего сообщения от пользователя, там есть текст, ID, и многое другое);
  2. Отправляем сообщение с приветствием, в name подставляем текст полученного сообщения от пользователя (то есть его имя).

Вот так с помощью двух функций мы научили нашего робота несложным действиям.

Последнее, что осталось добавить в код:

Зачем? Можно, конечно, запустить робота и без этой строки, но тогда он проработает не более одной секунды (а может и меньше). Суть в том, что при помощи функции polling наш робот постоянно обращается к серверам Telegram и как бы спрашивает «есть ли новые сообщения для меня (т. е. робота)?», получая ответы от Telegram.

Весь код нашего робота должен выглядеть примерно так:

Код робота на Python.

Сохраняем код нашего робота в файл с расширением .py , например robot.py . Важно знать папку, в которую мы сохранили файл.

Возвращаемся в терминал (или командную строку) и выполняем следующую команду:

Команда для запуска робота в macOS.

Замечу, что в Windows используется команда python , а в macOS python3 (поскольку в macOS ещё установлен Python 2.7).

Запуск робота в macOS.

Ничего не происходит? Замечательно, всё так и должно быть. Может даже показаться, что терминал завис, но это совсем не так.

Если ты всё правильно сделал, то робот должен ответить:

Наш робот в Telegram.

Отправляем роботу наше имя.

Ответ от робота.

Прекрасно! Всё работает ☺️

Чтобы выключить робота, вернись в терминал и нажми сочетание клавиш Ctrl + c .

У тебя получилось сделать своего первого робота, поздравляю ?

Что дальше?

Источник: messagu.ru

Бот для Telegram на облачных функциях

Сервисов, предоставляющих информацию о погоде, достаточно много, вот только какому из них верить? Когда я стал часто ездить на велосипеде, мне захотелось обладать наиболее точной информацией о погодных условиях в том месте, где я катаюсь. Первой мыслью было собрать небольшую DIY погодную станцию с датчиками и получать данные с нее. Но я не стал «изобретать […]

Изображение записи

Сервисов, предоставляющих информацию о погоде, достаточно много, вот только какому из них верить? Когда я стал часто ездить на велосипеде, мне захотелось обладать наиболее точной информацией о погодных условиях в том месте, где я катаюсь.

Первой мыслью было собрать небольшую DIY погодную станцию с датчиками и получать данные с нее. Но я не стал «изобретать велосипед» и в качестве источника проверенных данных выбрал погодную информацию, которая используется в гражданской авиации, а именно METAR (METeorological Aerodrome Report) и TAF (TAF — Terminal Aerodrome Forecast). В авиации от погоды зависят жизни сотен людей, поэтому прогнозы максимально точны.

Эта информация в круглосуточном режиме транслируется голосом на каждом современном аэродроме в виде ATIS (Automatic Terminal Information Service) и VOLMET (от франц. vol — полет и météo — погода). Первый предоставляет информацию о фактической погоде на аэродроме, а второй — прогноз на ближайшие 24-30 часов, причем не только на аэродроме трансляции, но и на других.

Еще по теме:  Клонировать Телеграмм на второй телефон без пароля

Каждый раз таскать с собой радиосканер или трансивер на соответствующий диапазон неудобно, и мне захотелось создать бота в Telegram, который по нажатию кнопки позволяет получить такой же прогноз. Выделять под это отдельный сервер как минимум нецелесообразно, равно как и гонять запросы на домашнюю Raspberry.

Поэтому в качестве бэкэнда я решил использовать сервис Облачные функции Selectel. Количество запросов будет ничтожно малое, поэтому такой сервис обойдется фактически бесплатно (по моим подсчетам выйдет 22 рубля за 100 000 запросов).

Подготовка бэкэнда

Создание функции

В панели управления my.selectel.ru открываем представление Облачная платформа и создаем новый проект:

После того как проект создан, переходим в раздел Функции:

Нажимаем кнопку Создать функцию и задаем ей нужное имя:

После нажатия Создать функцию у нас появится представление созданной функции:

Перед тем, как приступить к созданию кода на Python, потребуется создать бота в Telegram. Расписывать, как это делается, я не буду — детальная инструкция есть в нашей базе знаний. Главное для нас — токен созданного бота.

Готовим код

В качестве источника надежных данных я выбрал Национальное управление океанических и атмосферных исследований США (англ. National Oceanic and Atmospheric Administration, NOAA). Это научное агентство в реальном времени обновляет данные на своем сервере в формате TXT.

Ссылка для получения данных METAR:

https://tgftp.nws.noaa.gov/data/observations/metar/stations/.TXT

Обратите внимание на регистр.

В моем случае ближайшим аэропортом является Внуково, его код по ICAO — UUWW. Переход на сформированный URL выдаст следующее:

2020/08/10 11:30 UUWW 101130Z 31004MPS 9999 SCT048 24/13 Q1014 R01/000070 NOSIG

Первая строка — время актуальности прогноза по Гринвичу. Вторая строка — сводка о фактической погоде. Пилоты гражданской авиации без проблем поймут, что означает эта строка, однако нам нужна расшифровка:

  • [UUWW] — Внуково, город Москва (Россия — RU);
  • [101130Z] — 10-й день месяца, 11 часов 30 минут по Гринвичу;
  • [31004MPS] — направление ветра 310 градусов, скорость 4 м/с;
  • [9999] — горизонтальная видимость 10 км и более;
  • [SCT048] — рассеянные/разбросанные облака на высоте 4800 футов (~1584м);
  • [24/13] — температура 24°C, точка росы 13°C;
  • [Q1014] — давление (QNH) 1014 гектопаскалей (750 мм рт. ст.);
  • [R01/000070] — коэффициент сцепления на полосе 01 — 0,70;
  • [NOSIG] — без существенных изменений.

Приступаем к написанию программного кода. Для начала потребуется импортировать функции request и pytaf:

from urllib import request import pytaf

Указать переменные и подготовить функцию декодирования:

URL_METAR = «https://tgftp.nws.noaa.gov/data/observations/metar/stations/UUWW.TXT» URL_TAF = «https://tgftp.nws.noaa.gov/data/forecasts/taf/stations/UUWW.TXT»
def parse_data(code): code = code.split(‘n’)[1] return pytaf.Decoder(pytaf.TAF(code)).decode_taf()
https://tgftp.nws.noaa.gov/data/forecasts/taf/stations/.TXT

Регистр также важен.

Как и в предыдущем примере, посмотрим прогноз в аэропорту Внуково:

2020/08/10 12:21 TAF UUWW 101050Z 1012/1112 28003G10MPS 9999 SCT030 TX25/1012Z TN15/1103Z TEMPO 1012/1020 -TSRA BKN020CB BECMG 1020/1021 FEW007 BKN016 TEMPO 1021/1106 -SHRA BKN020CB PROB40 TEMPO 1021/1106 -TSRA BKN020CB BECMG 1101/1103 34006G13MPS

Особенно обратим внимание на строки TEMPO и BECMG. TEMPO означает то, что фактическая погода в указанный промежуток будет периодически меняться. BECMG — погода постепенно изменится в указанный промежуток времени.

TEMPO 1012/1020 -TSRA BKN020CB

  • [1012/1020] — в промежуток с 12 до 20 часов (по Гринвичу);
  • [-TSRA] — гроза (TS = thunderstorm) с дождем (RA = rain) небольшой интенсивности (знак минус);
  • [BKN020CB] — значительная (BKN = broken), кучево-дождевая (CB = cumulonimbus) облачность на высоте 2000 футов (610 метров) над уровнем моря.

Терминов, означающих погодные явления, достаточно много, и запомнить их сложновато. Код для запроса TAF пишется аналогичным образом.

Заливаем код в облако

Чтобы не тратить зря время, возьмем шаблон телеграм-бота из нашего репозитория cloud-telegram-bot. Там есть предварительно подготовленный requirements.txt и setup.py с корректной структурой директорий.

Поскольку в коде мы будем обращаться к модулю pytaf, то его версию следует сразу добавить в requirements.txt

pytaf~=1.2.1

Переходим к редактированию bot/tele_bot.py. Убираем все лишнее и дописываем наш код.

import os from urllib import request import telebot import pytaf TOKEN = os.environ.get(‘TOKEN’) URL_METAR = «https://tgftp.nws.noaa.gov/data/observations/metar/stations/UUWW.TXT» URL_TAF = «https://tgftp.nws.noaa.gov/data/forecasts/taf/stations/UUWW.TXT» bot = telebot.TeleBot(token=TOKEN, threaded=False) keyboard = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True) keyboard.row(‘/start’, ‘/get_metar’, ‘/get_taf’) def start(message): msg = «Привет. Это бот для получения авиационного прогноза погоды » «с серверов NOAA. Бот настроен на аэропорт Внуково (UUWW).» bot.send_message(message.chat.id, msg, reply_markup=keyboard) def parse_data(code): code = code.split(‘n’)[1] return pytaf.Decoder(pytaf.TAF(code)).decode_taf() def get_metar(message): # Fetch info from server. code = request.urlopen(URL_METAR).read().decode(‘utf-8’) # Send formatted answer. bot.send_message(message.chat.id, parse_data(code), reply_markup=keyboard) def get_taf(message): # Fetch info from server. code = request.urlopen(URL_TAF).read().decode(‘utf-8’) # Send formatted answer. bot.send_message(message.chat.id, parse_data(code), reply_markup=keyboard) def route_command(command, message): «»» Commands router. «»» if command == ‘/start’: return start(message) elif command == ‘/get_metar’: return get_metar(message) elif command == ‘/get_taf’: return get_taf(message) def main(**kwargs): «»» Serverless environment entry point. «»» print(f’Received: «»‘) message = telebot.types.Update.de_json(kwargs) message = message.message or message.edited_message if message and message.text and message.text[0] == ‘/’: print(f’Echo on «»‘) route_command(message.text.lower(), message)

  • Упаковываем всю директорию в ZIP-архив и переходим в панель управления к созданной функции.
  • Нажимаем Редактировать и загружаем архив с кодом.

  • Заполняем относительный путь в файлу tele_bot (расширение .py можно не указывать) и эндпойнт-функцию (в приведенном примере это main).
  • В разделе Переменные окружения пишем переменную TOKEN и присваиваем ей токен нужного телеграм-бота.
  • Нажимаем Сохранить и развернуть, после чего переходим в раздел Триггеры.
  • Ставим переключатель HTTP-запрос, чтобы сделать запрос публичным.

/setwebhook

Результат

Если все сделано правильно, то ваш бот сразу начнет работать и отображать актуальную сводку авиационной погоды прямо в мессенджере.

Еще по теме:  Как установить Телеграмм канал на мой телефон

Разумеется, код можно дорабатывать, однако даже в текущем состоянии его достаточно, чтобы узнать самую точную погоду и прогноз из проверенного источника.

Полную версию кода вы найдете в нашем репозитории на GitHub.

Источник: selectel.ru

Продвинутый способ создания ботов для Телеграм: осваиваем Python и…

Возможности Телеги по сравнению с другими средствами общения Интернете действительно впечатляют. Секретный чат и боты – очень удобные вещи. И если с созданием первого всё понятно, как найти робота в мессенджере, который будет выполнять функции, нужные именно вам?

Остаётся создать что-то своё, и бот для Телеграма на Python – самое распространённое решение для раскрытия скрытого функционала мессенджера. Однако, не самое простое. Поговорим о том, почему Питон не подходит новичкам.

Способы получения собственного бота

Для начала поговорим о том, как у вас может появиться собственный бот. Путей несколько.

  1. Написать самостоятельно. Ведущий язык программирования здесь – всем известный Питон. Это – самое трудоёмкое решение нашей задачи, но при этом и самое универсальное – если вы знаете, чего хотите и языки программирования, не придётся тратить много времени и денег для выполнения задачи.
    Продвинутый способ создания ботов для Телеграм: осваиваем Python и.
  2. Использовать конструктор. Да, есть такие инструменты, которые помогут вам. Минус здесь разве что в том, что чаще всего функционал у них ограничен, и не все ваши задумки могут воплотиться в жизнь. Но чат-бота или анонимный чат в них создать можно без проблем.
    Продвинутый способ создания ботов для Телеграм: осваиваем Python и.
  3. Купить. Да, боты в Телеграм продаются и делаются на заказ. Другое дело, что пишутся они на том же самом Python, и обучающих статей на эту тему есть огромное количество. Поэтому лично меня бы жаба задушила за то, что я заплатила за то, что могла сделать сама. С другой стороны, я пару месяцев назад решила попробовать написать его – и где результат? Нигде, потому что это оказалось сложно, ведь я не знаю Питона.
    Продвинутый способ создания ботов для Телеграм: осваиваем Python и.

В чем преимущества и недостатки создания Телеграм бота на Python?

Итак, как вы поняли из названия, статья именно о том, на чём мы пишем «роботов» и как. И для начала обсудим плюсы и минусы.

  • Ваши возможности практически безграничны.
  • Экономия денег.
  • Получения навыков, которые могут пригодиться – как минимум, вы можете зарабатывать на создании «роботов».
  • Трата времени и сил на изучение языка программирования.

Хотя плюсов и больше, единственный минус может их перевесить.

Как новичку создать бота для Телеграма на Python?

Сейчас будет небольшая и не очень подробная теоретическая инструкция по созданию. Здесь же скажу пару слов о возможных языках, которые вы можете выбрать: PHP и Javascript. И в том и в другом случае скорость работы результата будет выше, но в целом процесс написания сложнее и дольше. Именно поэтому Питон и является самым распространённым решением.

Почему создание бота на Python лучше доверить профессионалу?

Выше я явно негативно выразилась о покупке готового робота. Но на самом деле этот вариант не так уж и плох. Если вам нужен помощник, функционал которого нельзя запрограммировать на конструкторе, лучше найдите человека, который сделает хороший инструмент за вас. Так вы, во-первых, сэкономите время и деньги, и во-вторых, получите результат.

Если же делаете сами и изучаете язык программирования с нуля, результат не обязательно будет и далеко не факт, что вы получите ровно то, чего хотели. Кроме того, если вы воспользуетесь услугами фрилансера или целого агентства по работе с роботами, скорее всего вам предоставят примеры уже созданного, по которым вы и поймёте, чего ждать в конце.

Продвинутый способ создания ботов для Телеграм: осваиваем Python и.

Какой способ создания выбрать?

Итак, мы подошли к главному – вы уже примерно знаете, с чем столкнётесь на каждом из путей, с которым столкнётесь. И какой же выбрать? С одной стороны, если вам не нужен какой-то особенный функционал, и нужно создать, например, чат-бота, достаточно будет обычного конструктора. Зачем в этом случае платить кому-то или тратить время на изучение языков программирования?

Если же функционала таких инструментов-помощников вам мало, уже стоит задуматься либо над тем, где изучить Питона, либо над тем, где достать деньги на услуги профессионалов. И здесь уже я не могу дать вам точного ответа – всё зависит от вас. Если ваше время вам дороже, чем деньги, стоит заплатить. Если же наоборот – вперёд навстречу новым знаниям.

Также можете просто найти Телеграм-ботов. О том, где их искать, читайте в статье “Ищем ботов в Телеграм правильно“.

Заключение

Бот для Телеграма на Python – вещь непростая. Для создания его самостоятельно вам нужно понять, как работает эта сторона мессенджера, скрытая от глаз обычного пользователя. И если вы далеки от компьютерной сферы, это будет сложно. Но если вам не хватает конструкторов и денег на то, чтобы заплатить профессионалам, почему бы не попытаться?

Читайте далее:

Польза Телеграм ботов для каналов: как облегчить себе жизнь

Анонимный чат в Телеграм. В чем особенности и как его использовать?

Учимся пересылать сообщения в Телеграм с помощью бота

Где взять и как использовать виртуальный номер для Телеграма?

Опросы в Телеграм: зачем нужны и как создавать?

Источник: smmx.ru

Рейтинг
( Пока оценок нет )
Загрузка ...