Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 24, 2017 15:20:14

Proficus
Зарегистрирован: 2017-06-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с вызовом Модуля

Я как новичок в сфере программирования сейчас не совсем пойму почему возникает ошибка, кто может , объясните пожалуйста , почему он не может вызвать модуль

Вот сам код

 import constants
import telebot
import utils
import random
import SQLighter
from telebot import types
bot = telebot.TeleBot(constants.token_bobkovtest)
print("Bot Handler Game и Функция game запускается")
@bot.message_handler(commands=['game'])
def game(message):
    # Подключаемся к БД
    db_worker = SQLighter(constants.database_name)
    # Получаем случайную строку из БД
    row = db_worker.select_single(random.randint(1, utils.get_rows_count()))
    # Формируем разметку
    markup = utils.generate_markup(row[2], row[3])
    # Отправляем аудиофайл с вариантами ответа
    bot.send_voice(message.chat.id, row[1], reply_markup=markup)
    # Включаем "игровой режим"
    utils.set_user_game(message.chat.id, row[2])
    # Отсоединяемся от БД
    db_worker.close()
print("Функция Game выполнена успешно")
print("Запускаются условия")
@bot.message_handler(func=lambda message: True, content_types=['text'])
def check_answer(message):
    # Если функция возвращает None -> Человек не в игре
    answer = utils.get_answer_for_user(message.chat.id)
    # Как Вы помните, answer может быть либо текст, либо None
    # Если None:
    if not answer:
        bot.send_message(message.chat.id, 'Чтобы начать игру, выберите команду /game')
    else:
        # Уберем клавиатуру с вариантами ответа.
        keyboard_hider = types.ReplyKeyboardRemove()
        # Если ответ правильный/неправильный
        if message.text == answer:
            bot.send_message(message.chat.id, 'Верно!', reply_markup=keyboard_hider)
        else:
            bot.send_message(message.chat.id, 'Увы, Вы не угадали. Попробуйте ещё раз!', reply_markup=keyboard_hider)
        # Удаляем юзера из хранилища (игра закончена)
        utils.finish_user_game(message.chat.id)
print("Условия запущены")
print("Бот пул запускается")
if __name__ == '__main__':
    utils.count_rows()
    random.seed()
    bot.polling(none_stop=True)
print("Бот пул запущен")

И код ошибки
 C:\Users\Mihail\AppData\Local\Programs\Python\Python36-32\python.exe C:/Users/Mihail/PycharmProjects/telegram_bot/GitBooksBot.py
Bot Handler Game и Функция game запускается
Функция Game выполнена успешно
Запускаются условия
Условия запущены
Бот пул запускается
Traceback (most recent call last):
  File "C:/Users/Mihail/PycharmProjects/telegram_bot/GitBooksBot.py", line 55, in <module>
    bot.polling(none_stop=True)
  File "C:\Users\Mihail\AppData\Local\Programs\Python\Python36-32\lib\site-packages\telebot\__init__.py", line 244, in polling
    self.__threaded_polling(none_stop, interval, timeout)
  File "C:\Users\Mihail\AppData\Local\Programs\Python\Python36-32\lib\site-packages\telebot\__init__.py", line 268, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\Mihail\AppData\Local\Programs\Python\Python36-32\lib\site-packages\telebot\util.py", line 103, in raise_exceptions
    six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
  File "C:\Users\Mihail\AppData\Local\Programs\Python\Python36-32\lib\site-packages\six.py", line 686, in reraise
    raise value
  File "C:\Users\Mihail\AppData\Local\Programs\Python\Python36-32\lib\site-packages\telebot\util.py", line 54, in run
    task(*args, **kwargs)
  File "C:/Users/Mihail/PycharmProjects/telegram_bot/GitBooksBot.py", line 15, in game
    db_worker = SQLighter(constants.database_name)
TypeError: 'module' object is not callable
Process finished with exit code 1

Офлайн

#2 Июнь 24, 2017 15:28:23

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Проблема с вызовом Модуля

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

 import SQLighter
надо
 from SQLighter import SQLighter



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#3 Июнь 24, 2017 17:15:50

Proficus
Зарегистрирован: 2017-06-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с вызовом Модуля

ajib6ept
Если по учебнику пробуешь, то пытаешься вызвать модуль, а не классвместо
Большое спасибо, вопрос закрыт

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version