Я делаю дискорд бота который должен собирать время прибывания в голосовом канале а так же количество написанных сообщений и из этого формировать рейтинг пользователя, а затем запихивать топ самых активный пользователей в картинку и постить это в одном из каналов. Бот собирает рейтинг за неделю и за месяц. У меня есть Функция которая отвечает за расчёт, создание картинки и выкладывание ее в канал и их соответственно две - за месяц и за неделю. Один почти одинаковы отличаются только названия переменных но при этом месячная функция работает отлично а вот недельная возвращает одну и ту же ошибку. При чем очень странно - когда я добавляю дополнительный текст на картинку то возникает эта ошибка а когда убираю эту часть кода она пропадает/
Вот сама функция:
async def week_vipe():
global week
while True:
reyt = {}
for guild in client.guilds:
for member in guild.members:
voice = round(week[member.id]["voice"] / 120)
reyt[member.id] = week[member.id]["text"] + voice
sorted_reyt = {k: b for k, b in sorted(reyt.items(), key=lambda element: element[1], reverse=True)}
my_image = Image.open("maket.png")
image_editable = ImageDraw.Draw(my_image)
text = f"недiльний рейтинг"
image_editable.text((230,131), text, (125, 95, 53), font=myFont)
my_image.save("result.png")
for i in range(3):
keys_list = list(sorted_reyt)
username = client.get_user(keys_list[i])
reyting = sorted_reyt[keys_list[i]]
if i+1 == 1:
my_image = Image.open("result.png")
image_editable = ImageDraw.Draw(my_image)
text = f"{i+1}. {username}"
image_editable.text((620,211), text, (125, 95, 53), font=myFont)
my_image.save("result.png")
if i+1 == 2:
my_image = Image.open("result.png")
image_editable = ImageDraw.Draw(my_image)
text = f"{i+1}. {username}"
image_editable.text((620,429), text, (125, 95, 53), font=myFont)
my_image.save("result.png")
if i+1 == 3:
my_image = Image.open("result.png")
image_editable = ImageDraw.Draw(my_image)
text = f"{i+1}. {username}"
image_editable.text((620,647), text, (125, 95, 53), font=myFont)
my_image.save("result.png")
chat = client.get_channel(1005796493757780019)
await chat.send(file=discord.File('result.png'))
for guild in client.guilds:
for member in guild.members:
week[member.id] = {"voice": 0, "text": 0}
await asyncio.sleep(604800)
async def month_vipe():
global month
while True:
reyt = {}
for guild in client.guilds:
for member in guild.members:
voice = round(month[member.id]["voice"] / 120)
reyt[member.id] = month[member.id]["text"] + voice
sorted_reyt = {k: b for k, b in sorted(reyt.items(), key=lambda element: element[1], reverse=True)}
my_image = Image.open("maket.png")
image_editable = ImageDraw.Draw(my_image)
text = f"місячний рейтинг"
image_editable.text((230,131), text, (125, 95, 53), font=myFont)
my_image.save("result.png")
for i in range(3):
keys_list = list(sorted_reyt)
username = client.get_user(keys_list[i])
reyting = sorted_reyt[keys_list[i]]
if i+1 == 1:
my_image = Image.open("result.png")
image_editable = ImageDraw.Draw(my_image)
text = f"{i+1}. {username}"
image_editable.text((620,211), text, (125, 95, 53), font=myFont)
my_image.save("result.png")
if i+1 == 2:
my_image = Image.open("result.png")
image_editable = ImageDraw.Draw(my_image)
text = f"{i+1}. {username}"
image_editable.text((620,429), text, (125, 95, 53), font=myFont)
my_image.save("result.png")
if i+1 == 3:
my_image = Image.open("result.png")
image_editable = ImageDraw.Draw(my_image)
text = f"{i+1}. {username}"
image_editable.text((620,647), text, (125, 95, 53), font=myFont)
my_image.save("result.png")
chat = client.get_channel(1005796493757780019)
await chat.send(file=discord.File('result.png'))
for guild in client.guilds:
for member in guild.members:
month[member.id] = {"voice": 0, "text": 0}
await asyncio.sleep(2592000)
А вот участок который я подозреваю проблемный:
my_image = Image.open("maket.png")
image_editable = ImageDraw.Draw(my_image)
text = f"недiльний рейтинг"
image_editable.text((230,131), text, (125, 95, 53), font=myFont)
my_image.save("result.png")
Я читал про эту ошибку и пишут что проблема с сервером или с интернетом но это не так. Я пробовал заливать код на хостинг и запускать на своей машине и все та же ошибка. Спасибо.
Полный трейсбэк:
Простите не смог скопировать.