Pip install pytelegrambotapi как установить pycharm

от admin

Подготовка рабочего места в Windows и Linux. Virtual Environment (venv). Ответы на вопросы

Весь текст ниже появился как попытка дать универсальный ответ на те вопросы, которые дорогие читатели присылали и продолжают присылать раз за разом. Здесь не будет кода, связанного с ботами напрямую, а лишь советы по организации процесса написания. И, конечно же, не нужно воспринимать это как истину в последней инстанции, напротив, выбирайте те инструменты и подходы к разработке, которые лично вам кажутся удобными. Важная деталь: текст написан в конце 2019 года. Достаточно вступительных слов, поехали!

Предположим, вы уже немного знаете язык Python 3 (забудьте про Python 2.7, он мёртв), умеете писать простенькие программы и хотите взяться за разработку ботов. Где это делать? В чём писать код? Как правило, у большинства начинающих программистов основной операционкой используется Microsoft Windows. С неё и начнём, но сперва…

Virtual environment

Вы когда-нибудь пользовались VirtualBox? Например, чтобы «пощупать» другие операционные системы или просто установить какой-нибудь подозрительный софт. Python Virtual environment (далее — venv) чем-то напоминает «виртуалку». При его использовании создаётся копия выбранного интерпретатора Питон, а все устанавливаемые модули хранятся изолированно от общесистемных, тем самым, упрощается их обновление, удаление или изменение. Часто venv позволяет избежать ошибок, связанных с обратной совместимостью некоторых библиотек, а также обойтись без конфликтов с системными модулями. Работа с venv будет подробнее описана ниже в разделе Linux, но использовать его мы будем везде.

Windows

Первым делом, разумеется, нужно скачать сам интерпретатор Python. На момент написания этого текста актуальной версией является Python 3.8.1. В качестве каталога установки я рекомендую использовать что-то простое, вроде C:\Python38. Где писать код — личное дело каждого, конечно, но я всё же рекомендую использовать специальную среду разработки под названием PyCharm Community Edition. Бесплатной версии (та самая Community) более чем достаточно. После установки и первичной настройки выберите пункт File -> New Project. Укажите имя вашего первого проекта, а ниже укажите «New environment using virtualenv», ниже в качестве интерпретатора путь к python.exe каталога с Питоном (например, C:\Python38\python.exe).

Создание нового проекта в PyCharm

После запуска откройте вкладку Terminal в левом нижнем углу и установите библиотеку pytelegrambotapi (не telebot!). Для любителей тыкать мышкой есть более запутанный вариант: File -> Settings -> Project <имя проекта>-> Project Interpreter -> кнопка «+» в правой части экрана.

Установка библиотеки через терминал в PyCharm

Прекрасно, теперь начинайте творить! Создайте первый файл с исходником, нажав правой кнопкой мышки по имени проекта в списке файлов, затем New и Python File.

Создание нового файла кода в PyCharm

Запустить код можно, выбрав сверху пункт Run, затем снова Run…, но с многоточием, и затем выбрав созданный ранее файл.

Как залить файлы на сервер?

Для копирования файлов на удалённый сервер (обычно там стоит Linux), я использую замечательную бесплатную программу WinSCP, причём в ней присутствует режим автоматической синхронизации файлов, чтобы при любом изменении в локальном каталоге обновлялось содержимое на удалённой машине, избавляя вас от необходимости копировать всё вручную.

Скриншот программы WinSCP

При помощи WinSCP можно даже просто подключиться к серверу и подправить файл «на лету», не забудьте только потом перезапустить бота!

Linux

Если Linux у вас используется вместо Windows, то работа с PyCharm будет точно такой же, поэтому второй раз писать не имеет смысла. Далее рассмотрен процесс запуска в терминале на удалённом сервере. Прекрасно, вы написали бота и хотите где-то его запустить. Например, арендовали сервер у Scaleway/DigitalOcean/AWS/etc. Запустили сервер, подключились к нему по SSH, а там чёрный экран и терминальная Linux-сессия. Во-первых, давайте посмотрим, какой интерпретатор у нас выбран по умолчанию, введя команду python3 .

Хорошим правилом будет иметь на сервере ровно ту же версию Python, что и на своей локальной машине, во избежание различных неприятностей. Если версия на сервере ниже 3.7 и/или ниже той, что установлена локально, лучше всего будет установить её отдельно. Очень рекомендую вот эту статью, по которой я для себя написал простой скрипт для автоматизации рутинных действий. Итак, интерпретатор установлен, теперь пора создать каталог, куда положим файлы бота. Выполните по очереди следующие команды:

В результате должно получиться примерно то же самое, что на скриншоте ниже, с той лишь разницей, что я прервал процесс установки библиотеки для читабельности. Обратите внимание, что после подгрузки файла venv/bin/activate, перед названием пользователя и текущего каталога появится приписка (venv), означающая, что мы «вошли» в виртуальное окружение и устанавливаем библиотеки именно в него.

Создание venv в Linux-терминале

Что произошло выше? Во-первых, мы создали каталог с названием mybot и перешли в него. Во-вторых, мы использовали Python версии 3.7 (в вашем случае это может быть не так), чтобы создать виртуальное окружение в подкаталоге venv. В-третьих, мы «активировали» venv и выполнили в нём нужную нам команду. Внутри venv команды pip и python точно знают, к какому именно интерпретатору они относятся, поэтому путаницы вроде «я установил библиотеку для Python 3.5, а запускаю из-под Python 3.7» попросту не будет. Наконец, в-четвёртых, мы деактивировали venv, поскольку он напрямую нам больше не нужен. Чтобы сделать жизнь ещё приятнее, давайте настроим автозагрузку бота, чтобы при возникновении ошибок или при перезапуске сервера он вновь запускался, избавляя нас от необходимости постоянно проверять всё вручную. Для этого мы воспользуемся подсистемой инициализации systemd, которая всё больше распространена в современных Linux-дистрибутивах. Прежде, чем описать службу systemd, откройте главный файл с ботом, в котором прописан его запуск и добавьте в качестве первой строки следующий код: #!venv/bin/python

Сохраните файл, закройте его и выполните команду chmod +x имяфайласботом.py , чтобы сделать его исполняемым. Теперь создайте файл mybot.service, и скопируйте туда следующий текст:

Отредактируйте поля Description , WorkingDirectory и ExecStart , сохраните и закройте файл. Далее скопируйте его в каталог /etc/systemd/system , введя свой пароль при необходимости (если сидите не из-под рута, что правильно, то ваш юзер должен иметь возможность выполнять команды от имени sudo). Затем выполните следующие команды для включения автозагрузки и запуска бота (опять-таки, требуются права суперпользователя):

Наконец, проверьте состояние вашего бота командой systemctl status mybot . Его статус должен быть Active (running) зелёного цвета (если поддерживается разноцветный режим).

Проверка статуса бота через systemd

Как редактировать файлы на сервере?

Если что-то нужно подправить небольшое, то неплохим вариантом остаётся старое доброе подключение по SSH и использование редакторов вроде micro, nano или даже vim с emacs. Но если вдруг у вас в качестве локальной машины применяется Linux, то крайне рекомендую редактор Visual Studio Code (https://code.visualstudio.com) с дополнением Remote-SSH. В этом случае, вы сможете прямо в VS Code открывать каталоги на сервере и редактировать файлы в удобном окружении и с подсветкой синтаксиса. К сожалению, насколько мне известно, расширение Remote-SSH не работает в Windows, но впоследствии этот недочёт будет устранён.

Ответы на часто задаваемые вопросы (FAQ)

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

Читать:
Как сделать изображение без фона

Можно ли писать ботов на телефоне?
Да кто ж вам запретит-то? Но лучше от этого никому не будет, поверьте. Будет трудно, неудобно и контрпродуктивно. Используйте нормальный компьютер.

[pyTelegramBotAPI] Ошибка AttributeError: module ‘telebot’ has no attribute ‘TeleBot’!
На 99% уверен, что вы установили библиотеку telebot вместо pytelegrambotapi. С учётом всего вышесказанного проще создать новое окружение venv, перенести туда нужные файлы и установить именно pytelegrambotapi, при этом в исходниках должно остаться import telebot.

Как мне держать бота запущеным в Windows?
Запустите бота в PyCharm, не закрывайте приложение и не выключайте комп. Почти шутка. По-моему, Windows — не самая лучшая операционка для подобных вещей, проще арендовать сервер у европейских провайдеров, заодно не будет геморроя с варварами из Российского Консорциума Неадекватов.

Библиотека pyTelegramBotAPI не поддерживает новые фичи Bot API!
К сожалению, упомянутая библиотека в 2019 году развивалась гораздо медленнее, чем хотелось. Если вы уже чувствуете себя уверенным ботописателем, подумайте о переходе на альтернативы вроде aiogram.

В завершение хочется напомнить, что если у вас возникли замечания, предложения или вопросы, вы всегда можете открыть issue на Github или прийти к нам в чатик.

Разбираемся с Tg ботом вместе. Python

Решил разобраться с написанием телеграмм бота и поделиться успехами с Вами.

Как уже было сказано ранее основная цель освоить телеграмм бота и создать некоторые шаблоны которые могут пригодиться в будущем для создания полноценного бота.

Всё начинается с малого

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

Поиск в tg @BotFather

Запомнить токен(Ваш доступ к боту)

Ⅱ. Подготовка

Пишем на Python’е с использованием библиотеки PyTelegramBotAPI. Я использую PyCharm, его можно скачать на официальном сайте https://www.jetbrains.com/ru-ru/pycharm/. Так же для установки библиотеки PyTelegramBotAPI вводим следующую команду в командной строке

Ⅲ. Базовые элементы. Привет

Импортируем библиотеку и подключаем нашего бота

Описываем метод получения текстовых сообщений:

Опишем функцию обработки полученного сообщения. При получении слова «Паника» бот будет отвечать «заразна !». Для помощи пользователю будем выводить ещё текст о том что надо делать.

Обратим внимание на переменную message.from_user.id она хранит уникальный для каждого пользователя id, именно с помощью него мы сможем отвечать нужному человеку и его я планирую в будущем хранить в базе данных пользователей

Наш бот будет у сервера Telegram постоянно спрашивать «Мне кто-нибудь написал?» Если это случится, наш бот получит переданное сообщение. Для этого допишем:

Работает !

Ⅳ. Диалог

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

Заведем ряд переменных в которых будем хранить данные регистрации:

Аналогично как в предыдущем пункте опишем функцию начала регистрации start по команде /reg

Далее опишем ряд последовательных функций — этапов нашей регистрации:

В каждой из этих функций мы с помощью переменной message получаем интересующие нас данные, сохраняя их и с помощью bot.register_next_step_handler переходим к следующей функции. В функции get_age проверяем чтобы полученное значение действительно было числом.

В следующей части рассмотрим работу с кнопками и сохранение данных в базе данных.

Создаем телеграм бота

Заходим в сам телеграм и вбиваем в поиск BotFather — это менеджер всех ваших ботов. Выбираем команду /newbot и следуем инструкции. В конце, Вы, увидите токен, с помощью него ведется управление ботом, потому не светите им 🙂

Переходим в нашу среду разработки PyCharm и создаем два файла main.py, constant.py. В первом будет основной код, а во втором константы, такие как токен. Сделал я это, чтобы не светить их в основном коде.

Для начала работы, нам надо создать основной объект bot, через него мы будем обращаться к API telegram с использование необходимых методов. Для создания этого объекта надо вызвать конструкторы, в качестве параметра передать токен бота, который мы вынесли в отдельный файл в виде переменной.

Проверим работоспособность бота. Заходим с ним в диалог и нажимаем СТАРТ. Вводим следующий URL в адресную строку, вместо <token> вставляем собственный токен и нажимаем Enter. Если все в порядке, то Вы увидите много текста json файла, но нам нужно скопировать оттуда только id(число).

Отправим себе сообщение. Добавляем следующую строчку в код и компилируем.

Мы убедились, что наш бот готов к бою. Переходим к следующему этапу =>

Начинаем кодить

Я буду делать бота, который превратит html разметку в специфичный текст.
Основой будут декораторы так называемые “слушатели”, которые обрабатывают входящие сообщения.

Таким образом, мы можем разнести код по различным функциям и не кучковать все в одном месте, что делает код читабельным. Обратите внимание: декораторы будут проверяться в порядке их следования в коде, по принципу “какой первый подходит, тот и используем”. Под “подходит” будем понимать равенство нашей лямбда-функции значению True .

Пользователь пишет команду /start нашему боту, она подходит нам? Да, ведь она прописана в декораторе, соответственно True . По сути, это замена огромного количества конструкций if-elif-else , в которых можно легко запутаться.

Список частых хэндлеров(декораторов):

Для бота следует написать хэндлер, который обработает команды /start и /help, после чего, выведет информацию о себе.

Теперь разберемся, что к чему. Функция handle_help_start принимает аргумент message — это json файл, рассмотренный выше. Из него мы извлекаем необходимые параметры для объекта bot, к которому приписали метод send_message. Первый параметр — чат id куда отправиться сообщение, второй — это текст, прописанный в constant.py, дабы не “извращать” код, но если Вы шалун… Можете ВСЕ лепить в одну кучу 🙂
parse_mode — это парсер тегов html-разметки. Проще говоря, включение “следопыта”, что будет искать определенные теги для текста и превращать его в жирный или курсивный.

Последний хэндлер, который у̶б̶е̶р̶е̶т̶ ̶т̶е̶г̶и̶ отправит видоизмененный текст пользователя в чат.

Для нашего удобства, напишем функцию log, она будет выводить основную информацию: Когда? Кто прислал? Что прислал?. Видеть будем только мы!

И добавим в конце строку bot.polling(none_stop=True), она приводит наш код в непрерывное исполнение, подобие цикла while True.

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

#2 – Базовые концепции создания бота

Поскольку вся разработка ведется на основе языка Python, то в первую очередь нужно зайти на официальный сайт Питона и скачать последнюю доступную версию на ваш ПК. Также скачайте программу для написания кода. В курсе будет использована программа PyCharm.

В программе можете создать новый проект и внутри него создать новый файл для написания кода.

Работа с API Telegram

Для работы с API Telegram можно использовать специальную библиотеку. Таковых библиотек несколько и за курс вы еще успеете ознакомится с дополнительной библиотекой. Сперва, мы начнем свою работу с одной из наиболее популярных и простых в использовании библиотек – pyTelegramBotAPI . Библиотека позволит получать сообщения и выполнять обработку всех действий.

Чтобы её скачать вам нужно перейти на сайт менеджера PIP и скопировать команду по установке библиотеки pyTelegramBotAPI.

В программе PyCharm откройте терминал и вставьте скопированную команду:

После нужно дождаться окончания процесса установки и вы сможете работать с этой библиотекой.

Похожие статьи