@allteg
типа программист (начинающий, ну прям очень!)

Как импортировать модуль в код (пишу telegram бот, на pythone)?

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

Суть проблемы:
я написал не большой модуль и вынес его в отдельный файл что б в дальнейшем импортировать его в основной код
но при импортировании у меня не че не выходит, я пишу код на программе pycharm с библиотекой telebot, и pycharm
ошибку не выдает пищит что то типа вот этого:

и не в боте а у себя в нижней панели (не знаю как она называется). все что я написал в модули котором вынес из кода это 2-а вот этих слова ( info = '33' ) сохранил как положен в ".py" и вот так вот попытался вынести модуль в код:
elif message.text == 'инфо':
print(info)
т.е. когда человек нажал на кнопочку "инфо" бот должен был выводить то что я написал в модули, а именно: "33"
но к сожалению у меня не че не выходит.

примерный код:

# -*- coding: utf-8 -*-

import telebot
import constants
import info

bot = telebot.TeleBot(constants.token)

@bot.message_handler(commands=['start'])
def handle_start(message):
    user_markup = telebot.types.ReplyKeyboardMarkup(True)
    user_markup.row('вариант №1')
    bot.send_message(message.from_user.id, 'Добрый день', reply_markup=user_markup)

@bot.message_handler(commands=['stop'])
def handle_start(message):
    hide_markup = telebot.types.ReplyKeyboardRemove(True)
    bot.send_message(message.from_user.id, "вы закрыли клавиатуру", reply_markup=hide_markup)

@bot.message_handler(content_types=['text'])
def handle_text(message):
    if message.text == 'вариант №1':
        user_markup = telebot.types.ReplyKeyboardMarkup(True)
        user_markup.row('инфо')
        user_markup.row('назад')
        bot.send_message(message.from_user.id, 'выброли вариант №3', reply_markup=user_markup)

    elif message.text == 'инфо':
        print(info)

    elif message.text == 'назад':
        user_markup = telebot.types.ReplyKeyboardMarkup(True)
        user_markup.row('вариант №1')
        bot.send_message(message.from_user.id, '...', reply_markup=user_markup)

    else:
        bot.send_message(message.from_user.id, 'простите, данная команда пока не готова.')

bot.polling(none_stop=True)
  • Вопрос задан
  • 2280 просмотров
Пригласить эксперта
Ответы на вопрос 2
Bastax13
@Bastax13
В начале программы выполните import название_модуля. А вообще, для 2х слов создавать отдельную программу...кхм...как-то не очень.
Ответ написан
@evggor87
Попробуй так, в начале нужно указывать импортированный модуль:
elif message.text == 'инфо':
         info.print(info)

или
elif message.text == 'инфо':
         info.print()

Чтобы не указывать имя модуля, можно подключить все переменные:
from info import *
Только необходимо учитывать, что импортирование всех атрибутов из модуля может нарушить пространство имен главной программы, так как переменные, имеющие одинаковые имена, будут перезаписаны.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы