def initial_linker(self, master, slave):
master = discord.utils.get(self.bot.servers, id=master)
slave = discord.utils.get(self.bot.servers, id=slave)
if master is None or slave is None:
return
my_role = discord.utils.find(lambda r: r.name.lower() == "squid",
slave.roles)
if my_role is None:
role_dict = {}
role_dict['permissions'] = \
discord.Permissions(permissions=36826127)
role_dict['name'] = "Squid"
my_server_role = await self.bot.create_role(slave, **role_dict)
await self.bot.add_roles(slave.me, my_server_role)
log.debug('Slave roles:\n\t{}'.format(
[role.name for role in slave.roles]))
await self._delete_all_roles(slave)
log.debug('Slave roles:\n\t{}'.format(
[role.name for role in slave.roles]))
await self._create_all_roles(slave, master)
# We only really care about the online people, this way we *hopefully*
# don't get ourselves rate-limited on large servers.
online_master_members = [m for m in master.members
if m.status == discord.Status.online]
omm_withrole = [m for m in online_master_members if len(m.roles) > 1]
ommwr_in_slave = [m for m in omm_withrole if m in slave.members]
log.debug('members to give role to RN:\n\t{}'.format(
[m.name for m in ommwr_in_slave]))
for m in ommwr_in_slave:
slave_member = discord.utils.get(slave.members, id=m.id)
to_add = []
for mrole in m.roles:
if mrole.name.lower() == "@everyone" \
or mrole.name.lower() == "squid":
continue
log.debug(self._matching_role(slave, mrole))
to_add.append(self._matching_role(slave, mrole))
log.debug('adding roles to {0.name} on {1.id}:\n\t{2}'.format(
slave_member, slave, [r.name for r in to_add]))
discord.compat.create_task(
self.bot.add_roles(slave_member, *to_add))
评论列表
文章目录