Есть 5 серверов дискорда. 4 сервера основных и 1 второстепенный. Во второстепенном понадобилось, чтобы проверять соответствующие роли к другим 4 серверам, а если у участника нету данной роли в соответствующему серверу, то он должен быть кикнут со второстепенного. Сделал код через костыль и не получается заставить работать функцию kick, ибо выдает ошибку. Помогите, пожалуйста, разобраться. Пока что в коде 1 основной и 1 второстепенный сервер.
Код:
import discord
import asyncio
from discord.ext import commands
token = 'TOKEN'
GUILD_1=653925478545096715
GUILD_HP=653925807776858201
client=commands.Bot(command_prefix='#')
@client.event
async def on_ready():
print('BOT connected')
#ЧП
check_list(GUILD_HP, "1")
check_list(GUILD_1, "1") #Список людей из 1
#HYDRA
hydra(GUILD_1,"1")
def check_list(GUILD, ID):
for guild in client.guilds:
if guild.id == GUILD:
break
f = open(str(GUILD)+'_id_'+ID+'.txt', 'w')
for member in guild.members:
for role in member.roles:
if role.name == ID:
f.write(str(member.id)+'\n')
f.close()
@client.command(kick_members=True)
async def hydra(GUILD,ID):
for guild in client.guilds:
if guild.id == GUILD:
break
kick=[] #Которые будут кикнуты
per_HP=[] #Список всех людей в HP
per=[] #Люди в 1
with open(str(GUILD)+'_id_'+ID+'.txt', "r") as file:
per = file.read().splitlines()
with open(str(GUILD_HP)+'_id_'+ID+'.txt', "r") as file:
per_HP = file.read().splitlines()
for k in range(len(per)):
per[k]=int(per[k])
for k in range(len(per_HP)):
per_HP[k]=int(per_HP[k])
for k in range(len(per_HP)):
if per_HP[k] not in per:
kick.append(per_HP[k])
print('Кол-во:',len(kick),'\nБудут кикнуты:',kick,'\n\n')
for guild in client.guilds:
if guild.id == 653925807776858201:
break
for k in range(len(kick)):
mem=guild.get_member(kick[k])
await client.kick(mem,reason=None)
client.run(token)
Ошибка:
Warning (from warnings module):
File "C:\Users\USER\Desktop\HP\HP.py", line 29
hydra(GUILD_1,"1")
RuntimeWarning: coroutine 'Command.__call__' was never awaited