Attributeerror module telebot has no attribute telebot как исправить

version of pyTelegramBotAPI is 2.3.2 OS is Ubuntu 16.04 LTS 64 Python version 3.5.2 Hi, i got the problem, trying to launch the first example. My code is: import telebot TOKEN="3156... etc&quo...

@Honotoo

  1. version of pyTelegramBotAPI is 2.3.2
  2. OS is Ubuntu 16.04 LTS 64
  3. Python version 3.5.2
    Hi, i got the problem, trying to launch the first example. My code is:

import telebot
TOKEN=»3156… etc»
bot = telebot.TeleBot(TOKEN)
@bot.message_handler(commands=[‘start’, ‘help’])
def send_welcome(message):
bot.reply_to(message, «Howdy, how are you doing?»)
@bot.message_handler(func=lambda message: True)
def echo_all(message):
bot.reply_to(message, message.text)
bot.polling()

the terminal :

bot = telebot.TeleBot(TOKEN)
AttributeError: module ‘telebot’ has no attribute ‘TeleBot’

@Honotoo

Also I saw the issue here:
#274
It didn`t help

@MasterGroosha

How did you install the module?

@Honotoo

I installed it, using the pip command, as in the guide…
saw your comment and decided to reinstall it the other way, by «git clone» . it is still not working.
interesting, but when there was no library installed at all, console showed the same result. consequently the problem should be somewhere with python or linux. So i upgraded python with «sudo apt-get upgrade python3″… in vain. maybe I should read something?

@MasterGroosha

  1. Install pip (if you don’t have it): wget https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py
  2. pip3 install pytelegrambotapi

After that you should be fine.

Lil-Homer reacted with thumbs up emoji
Retul15, felmurodov, IsmaelHeredia, alessiocelentano, prochorman, kutsaltotem, gdarron, MagicDebate, LordOberlord, trckster, and 35 more reacted with thumbs down emoji

@Honotoo

pip was installed before with
sudo apt install python-pip
and removed with
python -m pip uninstall pip setuptools
Made all steps, but nothing.
Should mention, that it worked only with «sudo» and «wget https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py» had to be separate in «wget https://bootstrap.pypa.io/get-pip.py » and «python3 get-pip.py» . perhaps it has some impact

@ghost

I am having the same issue. Running Python 3.6.4 (64-bit) on Windows 7.

@EnriqueCepeda

Im also having this issue in ubuntu 18.04 lts

@EnriqueCepeda

Im also having this issue in ubuntu 18.04 lts

Hi people, the problem I had was about the virtual enviroments, so look that good because it can possibly be a problem of the package installation

@abdullah20401

I have Windows 7 32 bit and I have the same problem.
@bot.message_handler(commands=['start', 'help']) AttributeError: 'TeleBot' object has no attribute 'message_handler'

@Guatama

The same problem on Windows 10. Python 3.7.1

@HooZz

Hi! I had the issue and in my case there was a name conflict — I named the test file as telebot.py So, «import telebot» statement was importing the file itself and not the module I needed. After the filename change code started to work.

@Guatama

OMG! I was so blind… «has no attribute ‘Telebot’… but has ‘TeleBot’

AlexPetul, Honotoo, eltarotassadar, fj-fj-fj, trckster, jokkloo, gl-igor-g, myown-del, cotyhoroshko, davide-cas, and 11 more reacted with thumbs up emoji
Guatama, cotyhoroshko, rkachko, piradata, Caroline-boop, Dioweet-hash, vatsal-vebuin, naeeemkk, yasirKhaan, east1a, and ph0e3n1x reacted with laugh emoji

@AlexPetul

OMG! I was so blind… «has no attribute ‘Telebot’… but has ‘TeleBot’

Same problem omg

@Falcon-Peregrine

I fixed this with ‘TeleBot’ instead of Telebot

zappky, j0inttm, davidnatro, lalalalaluk, eltarotassadar, trckster, myown-del, MagicWinnie, mannyanebi, piradata, and 6 more reacted with thumbs up emoji
MasterGroosha, kmishukov, adriandelarco, and PankajBorde reacted with thumbs down emoji
lalalalaluk, a0l6g0r8a9l2, eltarotassadar, and trckster reacted with laugh emoji
lalalalaluk, eltarotassadar, and trckster reacted with hooray emoji
lalalalaluk, eltarotassadar, trckster, piradata, and jnzm02 reacted with heart emoji
lalalalaluk, eltarotassadar, trckster, and piradata reacted with rocket emoji

@rOOtsystem2010

The same problem on Windows 10. Python 3.7.1

@Badiboy

I suppos you installed telebot

pip install telebot

instead of pyTelegramBotAPI

pip install pyTelegramBotAPI

@kolbak

I fixed this problem by reinstall package pyTelegramBotAPI in my project

@pvgdevelop

I had the similar issue, except it was AttributeError: module 'telebot' has no attribute 'AsyncTeleBot'
And this was happening in Debian 10
On my local machine Mac OS 11.4 everything worked fine right away.

pip suggests you use python -m pip install --user <package>
it also give the link on issue wth better explanation 5599

This helped helped me
python -m pip install --user -U pyTelegramBotAPI

Note, that running the same, but with -r requirements did NOT work.

Hope this will be useful to someone.

@n3b0

I fixed this with ‘TeleBot’ instead of Telebot

Same!

@coder2020official

@allanfernds

pip3 uninstall telebot
sudo pip3 install pyTelegramBotAPI

@Lil-Homer

  1. Install pip (if you don’t have it): wget https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py

    1. pip3 install pytelegrambotapi

After that you should be fine.

In Debian it worked perfectly. Thank you very much!! 😄

@CoopCodes

I had the similar issue, except it was AttributeError: module 'telebot' has no attribute 'AsyncTeleBot' And this was happening in Debian 10 On my local machine Mac OS 11.4 everything worked fine right away.

pip suggests you use python -m pip install --user <package> it also give the link on issue wth better explanation 5599

This helped helped me python -m pip install --user -U pyTelegramBotAPI

Note, that running the same, but with -r requirements did NOT work.

Hope this will be useful to someone.

Thanks so much! this helped

Из библиотек с ботами установлена только PyTelegramBotApi и с другими библиотеками не конфликтуют. Аргумент telebot.TeleBot() написан правильно.Через VPN запускать пробовал, аналогичная ошибка. При запуске скрипта с расширением **.py(имя скрипта не telebot) ругает первую строчку кода AttributeError: module ‘telebot’ has no attribute ‘TeleBot’. Все, что нашел в Google, все попробовал, в теле вопроса все расписал. Какие могут быть еще варианты решения. Спасибо за уделённое время.

import telebot

MypyBot = telebot.TeleBot('TOKEN заменён на свой, получен от BotFather в Telegram', parse_mode = None)

введите сюда описание изображения

задан 6 окт 2020 в 21:13

KillKimNovak's user avatar

KillKimNovakKillKimNovak

111 золотой знак1 серебряный знак4 бронзовых знака

1

Во-первых — проверьте, установлена ли у вас библиотека, и установлена ли она у вас правильно. Для верности можно полностью ее удалить

pip uninstall pytelegrambotapi
pip install --no-cache-dir pytelegrambotapi

Проблема, вероятно, именно в самом установленном модуле, ибо даже ваш код у меня запускается абсолютно нормально.
Как пример, небольшой эхо-бот:

import telebot

MypyBot = telebot.TeleBot('TOKEN', parse_mode = None)

@MypyBot.message_handler(content_types = ['text'])
def replyer(message):
    MypyBot.reply_to(message, message.text)

MypyBot.polling()

ответ дан 15 окт 2020 в 18:27

AlexVid's user avatar

AlexVidAlexVid

1861 серебряный знак7 бронзовых знаков

Думаю это потому что вместе с вашим файлом существует файл telebot.py. Если так то удалите этот файл. Потом снова запустите свою программу. Проблема решена.

ответ дан 30 июл 2021 в 17:12

Suhayli Tuev's user avatar

Suhayli TuevSuhayli Tuev

171 серебряный знак8 бронзовых знаков

pip3 install --user pytelegrambotapi

в PyCharm:

  1. CTRL+ALT+S
  2. Выбираете ваш проект
  3. и на + добавляете pytelegrambotapi
  4. снизу кнопочка install

Михаил Ребров's user avatar

Михаил Ребров

5,6748 золотых знаков24 серебряных знака38 бронзовых знаков

ответ дан 6 сен 2022 в 14:19

Xenial Kolomna's user avatar

Esenin7777

0 / 0 / 0

Регистрация: 07.05.2021

Сообщений: 4

1

07.05.2021, 21:22. Показов 20932. Ответов 6

Метки нет (Все метки)


всем доброго времени суток! Решил я начать учить Python. и прямо с первых дней попал на ошибку,которую сам не в состоянии пока что решить.
ребята,подскажите пожалуйста: выдает ошибку что телебот не имеет атрибута телебота.
вот исходник кода:

Python
1
2
3
4
5
6
7
8
9
10
11
import telebot
 
bot = telebot.TeleBot("1758796636:AAEwkvjRYOc31huGggSJnepPkVg0FrzUQnM")
 
 
@bot.message_handler(content_types=['text'])
def send_echo(message):
    bot.reply_to(message, message.text)
 
 
bot.polling(none_stop=True)

Имя файла в котором пишу Test.py
В чем еще может быть проблема?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Автоматизируй это!

Эксперт Python

6481 / 4174 / 1140

Регистрация: 30.03.2015

Сообщений: 12,318

Записей в блоге: 29

07.05.2021, 21:31

2

Esenin7777, моя подпись прямо для тебя написана



2



4044 / 2984 / 1076

Регистрация: 21.03.2016

Сообщений: 7,511

07.05.2021, 21:39

3

Цитата
Сообщение от Esenin7777
Посмотреть сообщение

В чем еще может быть проблема?

в том что не с того начали изучение



0



0 / 0 / 0

Регистрация: 15.06.2021

Сообщений: 1

15.06.2021, 20:17

4

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

Смотрим что проинсталлировано:
pip list
pip3 list

Удаляем все связанные пакеты:
pip uninstall telebot
pip3 uninstall telebot
pip uninstall pyTelegramBotAPI
pip3 uninstall pyTelegramBotAPI

Устанавливаем так как в документации разработчика модуля:
pip install pyTelegramBotAPI

По завершении инсталляции программа становится работоспособной.
Перезагрузка PyCharm не требуется.



0



Автоматизируй это!

Эксперт Python

6481 / 4174 / 1140

Регистрация: 30.03.2015

Сообщений: 12,318

Записей в блоге: 29

16.06.2021, 06:15

5

Цитата
Сообщение от bassman
Посмотреть сообщение

Этого нет на поверхности в инструкциях JetBrains что по-моему является досадным явлением.

как раз есть и никто в здравом уме не лезет в Пичарме в терминал за пипом, все просто нажимают плюсик в настройках. Как показано вот тут например



0



Fudthhh

16.06.2021, 15:39

Не по теме:

Welemir1, я обычно пишу import …, а потом тыкаю alt+shift+enter.)



0



Welemir1

16.06.2021, 15:41


    Module ‘telebot’ has no attribute ‘Telebot’

Не по теме:

Fudthhh, ну ты то уже заслуженный)



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

16.06.2021, 15:41

ModuleNotFoundError: No module named ‘telebot’
Всем доброго вечера!
Пытаюсь создать наипростейшего бота в тг, чтобы на любое сообщение он писал…

Бот для телеграма. AttributeError: ‘TeleBot’ object has no attribute ‘message_handler’
привет
вот код
самый простой код
import telebot
token=»—— тут токен
bot =…

ERROR — TeleBot: «AttributeError occurred, args=(«‘NoneType’ object has no attribute ‘format'»,)
Всем доброго дня! Пишу бота для телеграма, использую pyTelegramBotAPI.
Написал простенький код:…

telebot + telethon
Здравствуйте! Учусь делать ботов, хотел сделать бота, который при вводе команды выдаёт id всех…

Ошибка импорта telebot
Здравствуйте. Недавно, при написании бота для Telegram, возникла ошибка, возникающая при попытке…

Отсутствуют функции у telebot в PyCharm
Здравствуйте, установил модуль telebot (естественно через pip install pyTelegramBotAPI), но в…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

7

AttributeError: module ‘telebot’ has no attribute ‘TeleBot’ about telegram-tutorial HOT 14 CLOSED

Ошибка:
Traceback (most recent call last):
File «C:/Users/User/PycharmProjects/CI2CBot/Bot.py», line 3, in
bot = telebot.TeleBot(‘921146718:’)
AttributeError: module ‘telebot’ has no attribute ‘TeleBot’

Comments (14)

  1. Используется ли venv (virtual environment)?
  2. Если установлена библиотека telebot помимо pytelegrambotapi , удалите её и перезагрузите комп. Код трогать не надо.

MasterGroosha commented on December 30, 2019

Будем считать, что проблема решена

insert4079 commented on March 12, 2020

Вечер добрый. Та же проблема. Использую PyCharm. Импортировал pip install pyTelegramBotAPI, СКОПИРОВАЛ с официальной документации модуля код, но всё равно выдаёт ошибку AttributeError: partially initialized module ‘telebot’ has no attribute ‘TeleBot’ (most likely due to a circular import). Через консоль та же ошибка.
Погуглил, у многих проблема связана с тем, что вместо TeleBot они пишут telebot или Telebot, но ответа так и не нашел.

MasterGroosha commented on March 12, 2020

@insert4079
Покажите вывод pip freeze

insert4079 commented on March 12, 2020

certifi==2019.11.28
chardet==3.0.4
Click==7.0
Flask==1.1.1
idna==2.9
itsdangerous==1.1.0
Jinja2==2.11.1
MarkupSafe==1.1.1
pyTelegramBotAPI==3.6.7
requests==2.23.0
six==1.14.0
urllib3==1.25.8
Werkzeug==1.0.0

MasterGroosha commented on March 12, 2020

@insert4079 интерпретатор ругается на кольцевой импорт, покажите весь код, если это возможно

insert4079 commented on March 12, 2020

@bot.message_handler(commands=[‘start’, ‘help’])
def send_welcome(message):
bot.reply_to(message, «Howdy, how are you doing?»)

@bot.message_handler(func=lambda message: True)
def echo_all(message):
bot.reply_to(message, message.text)

MasterGroosha commented on March 12, 2020

@insert4079 это вообще весь код?

insert4079 commented on March 12, 2020

Да, я в самом начале уперся в эту ошибку.

MasterGroosha commented on March 12, 2020

@insert4079 попробуйте повторить в venv

insert4079 commented on March 12, 2020

Хорошо, но попробовать только вечером смогу.

insert4079 commented on March 13, 2020

С venv ошибки нет, спасибо!

tolphas4 commented on April 22, 2020

  1. Используется ли venv (virtual environment)?
  2. Если установлена библиотека telebot помимо pytelegrambotapi , удалите её и перезагрузите комп. Код трогать не надо.

как удалит библиотеку?

MasterGroosha commented on April 22, 2020

Related Issues (20)

  • Урок №5: в ссылке запроса к VK API отсутствует параметр «v»
  • Урок №0: битая ссылка на скрипт сборки Python 3.x
  • Урок №13: исправить текст в логировании
  • Ожидание сообщения HOT 1
  • Error HOT 3
  • import telebot in module HOT 6
  • 4 lesson HOT 5
  • Сделать OpenGraph-теги для каждой страницы учебника
  • Блокировка t.me ссылок HOT 1
  • Сделать что-то с SQLighter
  • Как понять какой модуль aiogram в каком файле бота нужно импортировать? HOT 4
  • Тотальная переделка учебника HOT 1
  • Ошибка при запуске HOT 5
  • Эхо бот не работает HOT 1
  • File «./zbxTelegram.py», line 11, in <module>
  • def start_message(message): TypeError: ‘NoneType’ object is not callable HOT 8
  • AttributeError: ‘TeleBot’ object has no attribute ‘message_handler’
  • Ошибка HOT 2
  • Ошибка запуска HOT 2
  • NameError: name ‘Telebot’ is not defined. Did you mean: ‘TeleBot’? HOT 6

Recommend Projects

React

A declarative, efficient, and flexible JavaScript library for building user interfaces.

Vue.js

Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

Typescript

TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

TensorFlow

An Open Source Machine Learning Framework for Everyone

Django

The Web framework for perfectionists with deadlines.

Laravel

A PHP framework for web artisans

Bring data to life with SVG, Canvas and HTML.

Recommend Topics

javascript

JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

Some thing interesting about web. New door for the world.

server

A server is a program made to process requests and deliver data to clients.

Machine learning

Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

Visualization

Some thing interesting about visualization, use data art

Some thing interesting about game, make everyone happy.

Recommend Org

Facebook

We are working to build community through open source technology. NB: members must have two-factor auth.

Хауди Хо™ - Просто о мире IT!

Игорь Бехтерев

Игорь Бехтерев запись закреплена

Pavlislav Vladov

Игорь Бехтерев

Игорь Бехтерев

Pavlislav Vladov

Игорь Бехтерев

Игорь Бехтерев ответил Pavlislav

Pavlislav Vladov

Игорь Бехтерев

Игорь Бехтерев ответил Pavlislav

Игорь Бехтерев

Игорь Бехтерев ответил Pavlislav

Pavlislav Vladov

Игорь Бехтерев

Игорь Бехтерев ответил Pavlislav

Бекзод Каххаров

Бекзод Каххаров

Игорь Бехтерев

Игорь Бехтерев

Игорь Мурашкин

Игорь Мурашкин

Игорь Бехтерев

Игорь Бехтерев

Module telebot has no attribute telebot что делать

Created at 2 years ago

Hi! I had the issue and in my case there was a name conflict — I named the test file as telebot.py So, «import telebot» statement was importing the file itself and not the module I needed. After the filename change code started to work.

Created at 2 years ago

OMG! I was so blind. «has no attribute ‘Telebot’. but has ‘TeleBot’

Created at 2 years ago

OMG! I was so blind. «has no attribute ‘Telebot’. but has ‘TeleBot’

Same problem omg

Created at 2 years ago

I fixed this with ‘TeleBot’ instead of Telebot

Created at 2 years ago

The same problem on Windows 10. Python 3.7.1

Created at 2 years ago

I suppos you installed telebot

instead of pyTelegramBotAPI

Created at 2 years ago

I fixed this problem by reinstall package pyTelegramBotAPI in my project

Created at 1 year ago

I had the similar issue, except it was AttributeError: module ‘telebot’ has no attribute ‘AsyncTeleBot’
And this was happening in Debian 10
On my local machine Mac OS 11.4 everything worked fine right away.

pip suggests you use python -m pip install —user <package>
it also give the link on issue wth better explanation 5599

This helped helped me
python -m pip install —user -U pyTelegramBotAPI

Note, that running the same, but with -r requirements did NOT work.

Подготовка рабочего места в 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:Python38python.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 и/или ниже той, что установлена локально, лучше всего будет установить её отдельно. Очень рекомендую вот эту статью, по которой я для себя написал простой скрипт для автоматизации рутинных действий.
Итак, интерпретатор установлен, теперь пора создать каталог, куда положим файлы бота. Выполните по очереди следующие команды:

mkdir mybot
cd mybot
python3.7 -m venv venv
source venv/bin/activate
pip install pytelegrambotapi
deactivate

В результате должно получиться примерно то же самое, что на скриншоте ниже, с той лишь разницей, что я прервал процесс установки библиотеки для читабельности. Обратите внимание, что после подгрузки файла 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, и скопируйте туда следующий текст:

[Unit]
Description=MY BOT
After=network.target

[Service]
Type=simple
WorkingDirectory=/home/user/mybot
ExecStart=/home/user/mybot/bot.py
KillMode=process
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

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

systemctl enable mybot.service
systemctl restart mybot

Наконец, проверьте состояние вашего бота командой 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 или прийти к нам в чатик.

Урок №1 →

Понравилась статья? Поделить с друзьями:
  • Attribute vb name syntax error
  • Attribute key error
  • Attribute error python почему
  • Attribute error python object has no attribute
  • Attrib exe ошибка при запуске приложения 0xc0000142