Найти - Пользователи
Полная версия: Ошибка ValueError: The following arguments have not been supplied: context
Начало » Python для новичков » Ошибка ValueError: The following arguments have not been supplied: context
1
ivantan4ik
Часть кода в которой она появляется
ошибка в строке ‘job.run_once(notify_users, 1)’
 def notify_users(update, context):
    map_weekdays = {
        0: 'Понедельник',
        1: 'Вторник',
        2: 'Среда',
        3: 'Четверг',
        4: 'Пятница',
        5: 'Суббота',
        6: 'Воскресенье'
    }
    # Получение чат айди
    global database
    chat_ids = [int(chat_id.strip()) for chat_id in database.split(';') if chat_id.strip() != '']
    current_week_number = datetime.now().isocalendar()[1] % 2
    if current_week_number == 0:
        current_week_number = 2
    current_week_id = datetime.now().weekday()
    current_week_name = map_weekdays[current_week_id]
    schedule = get_schedule(filename=filename)
    for chat_id in chat_ids:
        text = ''
        notify = db.get(chat_id)['notification']
        if notify == True:
            if datetime.now().hour > 12:
                if current_week_name != 'Воскресенье':
                    text += 'Завтра будут следующие пары:\n'
                    text += str(schedule[str(current_week_number)][map_weekdays[(current_week_id + 1) % 7]])
            else:
                if current_week_name == 'Суббота':
                    text += 'Завтра выходной!'
                else:
                    if current_week_name == 'Воскресенье':
                        if current_week_number == 2:
                            text += 'Завтра будут следующие пары:\n'
                            text += schedule['2']['Понедельник']
                        else:
                            text += 'Завтра будут следующие пары:\n'
                            text += schedule['1']['Понедельник']
            try:
                if text:
                    context.bot.send_message(chat_id=chat_id, text=text)
            except Exception as e:
                logger.error(f'(chat.id={chat_id}) failed - {e}')
if __name__ == '__main__':
    logger = get_logger('main')
    with open('database.txt', 'r') as database_file:
        database = database_file.read()
    filename = 'Расписание.xlsx'
    updater = Updater(token=settings.TOKEN, use_context=True)
    updater.dispatcher.add_handler(CommandHandler('start', null_step))
    updater.dispatcher.add_handler(MessageHandler(Filters.regex(r'\w+-\d+-\d+'), first_step))
    updater.dispatcher.add_handler(MessageHandler(Filters.text, second_step))
    # время в течении дня (В UTC - минус 3 часа по москве)
    evening_time = time(17, 0, 0, 000000)
    job = updater.job_queue
    job.run_once(notify_users, 1)
    evening_job = updater.job_queue
    evening_job.run_daily(notify_users, evening_time)
    logger.info('Bot is started')
    updater.start_polling()
    updater.idle()
как я понимаю не получается получить аргумент ‘context’, но на сколько я знаю он должен передаваться туда
xam1816
как вам помочь точно не знаю,но могу предположить
вот у вас функция
 def notify_users(update, context):

для чего там update? если он в функции нигде не используется,что этот аргумент принимает

может просто один context оставить в аргументах,он используется

 context.bot.send_message(chat_id=chat_id, text=text)
ivantan4ik
xam1816
как вам помочь точно не знаю,но могу предположитьвот у вас функция
да, это помогло, спасибо, но появилась другая ошибка TypeError: ‘bool’ object is not subscriptable
это ошибка происходит в данной строчке notification = db.get(chat_id), не знаете почему она выходит?
xam1816
ivantan4ik
это ошибка происходит в данной строчке notification = db.get(chat_id), не знаете почему она выходит?
Не известно откуда берется db. у вас она появляется один раз х-пойми откуда
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB