Почему бот отправляет сообщение, хотя по условия не должен этого происходить Discord.py?
@tasks.loop(hours = 18.0 )
async def sob():
c = today.weekday() # Проверяет день недели(изменить weekday) и написать такие же функции
if c == 5 or 6 :
channel = await bot.fetch_channel(926201516963029014)
await channel.send('Сегодня будет собрание')
else :
pass
В теории бот должен сначала поверить день недели и только потом скидывать сообщение, но он скидывает его сразу же, хотя по дате не подходит(сегодня понедельник следовательно с = 0)
Ответы (1 шт):
У Вас неверно реализована проверка дня недели: для проверки нескольких условий через ИЛИ нужно оформлять код следующим образом: if cond1 or cond2, где condN — условие. Я предполагаю, что Вы хотели проверить равенство переменной c с 5 или 6, однако Ваша формула будет трактована так:
if (c == 5) or (6)
т.е. если c == 5 или 6. При передаче любого численного ненулевого литерала подразумевается True, так что имеем в итоге
if c == 5 or True
а это всегда равно True, невзирая на c.
Стоит переписать данное условие таким образом:
@tasks.loop(hours = 18.0 )
async def sob():
c = today.weekday() # Проверяет день недели(изменить weekday) и написать такие же функции
if c == 5 or c == 6: # 6 меняем на c == 6
channel = await bot.fetch_channel(926201516963029014)
await channel.send('Сегодня будет собрание')
else :
pass
Теперь код действительно проверяет равенство переменной с 5 или 6 (скорее всего, субботой и воскресеньем?), и код будет работать только в эти дни, а не всегда.
P.S. Если хочется побаловаться, то можно использовать условие типа if c in [5, 6] :)