Этот код для бота Telegram должен работать, потому что я его скопировал, но не - PullRequest
0 голосов
/ 30 января 2020

Я начал изучать создание ботов в Telegram с Python 3. Я изучал его по этому курсу https://groosha.gitbook.io/telegram-bot-lessons/. Во втором уроке был код

    import telebot

    bot = telebot.TeleBot(config.token)

    @bot.message_handler(commands=['test'])
    def find_file_ids(message):
        for file in os.listdir('music/'):
            if file.split('.')[-1] == 'ogg':
                f = open('music/'+file, 'rb')
                msg = bot.send_voice(message.chat.id, f, None)
                bot.send_message(message.chat.id, msg.voice.file_id, reply_to_message_id=msg.message_id)
            time.sleep(3)


    if __name__ == '__main__':
        bot.polling(none_stop=True)

, и он должен работать следующим образом: я помещаю некоторые аудиофайлы в папку musi c, а затем бот отправляет мне аудио идентификатор. Но когда я копирую этот код, я каждый раз получаю одну и ту же ошибку:

2020-01-30 19:16:09,945 (util.py:66 WorkerThread2) ERROR - TeleBot: "NameError occurred, args=("name 'os' is not defined",)
Traceback (most recent call last):
  File "C:\Users\Sergej\AppData\Local\Programs\Python\Python37-32\lib\site-packages\telebot\util.py", line 60, in run
    task(*args, **kwargs)
  File "N2.py", line 7, in find_file_ids
    for file in os.listdir('music/'):
NameError: name 'os' is not defined
"
Traceback (most recent call last):
  File "N2.py", line 17, in <module>
    bot.polling(none_stop=True)
  File "C:\Users\Sergej\AppData\Local\Programs\Python\Python37-32\lib\site-packages\telebot\__init__.py", line 392, in polling
    self.__threaded_polling(none_stop, interval, timeout)
  File "C:\Users\Sergej\AppData\Local\Programs\Python\Python37-32\lib\site-packages\telebot\__init__.py", line 416, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\Sergej\AppData\Local\Programs\Python\Python37-32\lib\site-packages\telebot\util.py", line 109, in raise_exceptions
    six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
  File "C:\Users\Sergej\AppData\Local\Programs\Python\Python37-32\lib\site-packages\six.py", line 703, in reraise
    raise value
  File "C:\Users\Sergej\AppData\Local\Programs\Python\Python37-32\lib\site-packages\telebot\util.py", line 60, in run
    task(*args, **kwargs)
  File "N2.py", line 7, in find_file_ids
    for file in os.listdir('music/'):
NameError: name 'os' is not defined

Что я должен делать?

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Вам не хватает оператора import os в верхней части кода. Продолжайте учиться!

0 голосов
/ 30 января 2020

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

import os
import telebot
# Your code...
...