import telebot
from telebot import types
Получаю ошибку:
ImportError: cannot import name ‘types’ from ‘telebot’
(C:…..Anaconda3libsite-packagestelebot__init__.py)
задан 19 мая 2019 в 16:24
Вся проблема ушла после команды
pip install pyTelegramBotAPI
A K
28.5k19 золотых знаков54 серебряных знака130 бронзовых знаков
ответ дан 8 окт 2019 в 7:58
открываем setting (ctrl+alt+s) ищем python interpreter выбираем pip ищем pyTelegramBotAPI устанавливаем (я ещё и telebot установил) (пишу в pycharm)
ответ дан 6 ноя 2022 в 20:36
mi.kmi.k
211 серебряный знак4 бронзовых знака
Я пишу бота для телеграмма, и я пытаюсь импортировать класс types из модуля telebot, но он выдает ошибку:
Traceback (most recent call last):
File "C:UsersmaksaDesktopMy Filesbad botmain.py", line 2, in <module>
from telebot import types
ImportError: cannot import name 'types' from 'telebot' (C:Program FilesPython39libsite-packagestelebot__init__.py)
Что в такой ситуации делать? устанавливал даже pytelegrambotapi, но оно не помогает.
Hello! I have updated pyTelegramBotAPI to 2.3.0 version and when I’m trying to launch my bot I have such error: module ‘telebot’ has no attribute ‘types’ I haven’t meet this error before the update.
I am using MacOS Sierra with Python 3.5
Have you imported telebot first? Paste the import section please.
import telebot, server_manager, config, image_decoder, datetime, time
from threading import Thread
types = telebot.types #
bot = telebot.TeleBot(config.token)
I had «from telebot import types» before on the third line but it hasn’t worked too
Try
import telebot, server_manager, config, image_decoder, datetime, time
from threading import Thread
config.token = "random:numbers"
types = telebot.types #
bot = telebot.TeleBot(config.token)
Unfortunately, it is not woking too. I have never had such problem before the update.
Have you double checked that PyTelegramBotAPI is installed on the python you’re using?
Yes.
As I can see, I have problems only with the types. Not with whole telebot
import telebot, server_manager, config, image_decoder, datetime, time from threading import Thread from telebot import types bot = telebot.TeleBot(config.token) # More code here..... # Just use types rm = types.InlineKeyboardMarkup()
If you have from telebot import types
just use types
. You do not need types = telebot.types
.
I wrote that this variant had not worked too. Everything stopped working after the update, do you understand?
In python 3.5 the following doesn’t work from telebot import types
,
The Traceback is Traceback (most recent call last): File "calendar_api.py", line 4, in <module> from telebot import types ImportError: cannot import name 'types'
Check it out, maybe this simple issue would help you like it did to me #323
I am having the same issue. It was actually working not that long ago, but now I’m having an import issue
pip uninstall telebot
pip install pytelegrambotapi
import configparser
import config
import telebot
from telebot import types #buttons
from string import Template
bot = telebot.TeleBot(config.token)
user_dict = {}
class User:
def __init__(self, city):
self.city = city
keys = ['fullname', 'phone']
for key in keys:
self.key = None
# если /help, /start
@bot.message_handler(commands=['start','help'])
def send_welcome(message):
chat_id = message.chat.id
bot.send_message(chat_id, "Здравствуйте." + "{message.from_user.first_name}" + " Я бот! Я могу вам помочь связаться с оператором для консультации.", reply_markup=markup)
return(chat_id)
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
#bot.send_message(message.chat.id, "Здравствуйте. {message.from_user.first_name}" + " Я бот! Я могу вам помочь связаться с оператором для консультации.", chat_id=call, reply_markup=markup)
def process_city_step(message):
try:
chat_id = message.chat.id
user_dict[chat_id] = User(message.text)
# удалить старую клавиатуру
markup = types.ReplyKeyboardRemove(selective=False)
msg = bot.send_message(chat_id, 'Как к вам обращаться?', reply_markup=markup)
bot.register_next_step_handler(msg, process_fullname_step)
except Exception as e:
bot.reply_to(message, 'ooops!!')
def process_fullname_step(message):
try:
chat_id = message.chat.id
user = user_dict[chat_id]
user.fullname = message.text
msg = bot.send_message(chat_id, 'Ваш номер телефона')
bot.register_next_step_handler(msg, process_phone_step)
except Exception as e:
bot.reply_to(message, 'ooops!!')
def process_phone_step(message):
try:
int(message.text)
chat_id = message.chat.id
user = user_dict[chat_id]
user.phone = message.text
except Exception as e:
msg = bot.reply_to(message, 'Вы ввели что то другое. Пожалуйста введите номер телефона.')
bot.register_next_step_handler(msg, process_phone_step)
def process_social_step(message):
try:
chat_id = message.chat.id
user = user_dict[chat_id]
user.carModel = message.text
markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
itembtn1 = types.KeyboardButton('Только телефон')
itembtn2 = types.KeyboardButton('Telegram')
itembtn3 = types.KeyboardButton('Viber')
itembtn4 = types.KeyboardButton('WhatsApp')
markup.add(itembtn1, itembtn2, itembtn3, itembtn4)
msg = bot.send_message(chat_id, 'Ваши соц сети', reply_markup=markup)
bot.register_next_step_handler(msg)
except Exception as e:
bot.reply_to(message, 'ooops!!')
# ваша заявка "Имя пользователя"
bot.send_message(chat_id, getRegData(user, 'Ваша заявка', message.from_user.first_name), parse_mode="Markdown")
# отправить в группу
bot.send_message(config.chat_id, getRegData(user, 'Заявка от бота', bot.get_me().username), parse_mode="Markdown")
except Exception as e:
bot.reply_to(message, 'ooops!!')
# формирует вид заявки регистрации
# нельзя делать перенос строки Template
# в send_message должно стоять parse_mode="Markdown"
def getRegData(user, title, name):
t = Template('$title *$name* n ФИО: *$fullname* n Телефон: *$phone* ')
return t.substitute({
'title': title,
'name': name,
'fullname': user.fullname,
'phone': user.phone
})
# произвольный текст
@bot.message_handler(content_types=["text"])
def send_help(message):
bot.send_message(message.chat.id, 'О нас - /aboutnРегистрация - /regnПомощь - /help')
# Enable saving next step handlers to file "./.handlers-saves/step.save".
# Delay=2 means that after any change in next step handlers (e.g. calling register_next_step_handler())
# saving will hapen after delay 2 seconds.
bot.enable_save_next_step_handlers(delay=2)
# Load next_step_handlers from save file (default "./.handlers-saves/step.save")
# WARNING It will work only if enable_save_next_step_handlers was called!
bot.load_next_step_handlers()
if __name__ == '__main__':
bot.polling(none_stop=True)
Автор вопроса: Garison
import telebot
from telebot import types
Получаю ошибку:
ImportError: cannot import name ‘types’ from ‘telebot’
(C:…..Anaconda3libsite-packagestelebot__init__.py)
Источник
Ответы (3 шт):
Автор решения: roman147
Вероятнее всего имеет место путаница с названиями.
import telebot
, но pip install pyTelegramBotApi
, а не pip install telebot
.
https://pypi.org/project/pyTelegramBotAPI/ != https://pypi.org/project/telebot/
→ Ссылка
Автор решения: Oksana Globa
Вся проблема ушла после команды
pip install pyTelegramBotAPI
→ Ссылка
Автор решения: mi.k
открываем setting (ctrl+alt+s) ищем python interpreter выбираем pip ищем pyTelegramBotAPI устанавливаем (я ещё и telebot установил) (пишу в pycharm)
→ Ссылка