async def groupmessage(self, ctx: Context, role_name: str, message: str): """Broadcast a message to a group you belong to, es `groupmessage mygroup`""" if message is None or len(message) <= 2: return await ctx.channel.send( 'Message "{0}" is too short'.format(message)) member = ctx.message.author role = _get_role_by_name(member.guild, role_name) if role is None: return await ctx.channel.send('Group "{0}" doesn\'t exists'.format( role.name)) if not _has_role(member, role) and not _is_admin(ctx): return await ctx.channel.send( 'You are not in the group "{0}"'.format(role.name)) broadcastlimit = 1000 if len(role.members) > broadcastlimit: return await ctx.channel.send( 'There are "{0}" users in {1}, broadcast is limited to {2}'. format(len(role.members), role.name, broadcastlimit)) await ctx.channel.send('{0} says "{1}" to "{2}"'.format( member.mention, message, role.name)) for m in role.members: await m.create_dm() await m.dm_channel.send('{0} says:'.format(member.mention)) await m.dm_channel.send(message)
def del_default_role(guild: discord.Guild, role_name: str) -> str: role = _get_role_by_name(guild, role_name) if role is None: return 'Role "{0}" doesn"t exists'.format(role_name) roles = (DefaultRole.select().where(DefaultRole.guild_id == guild.id, DefaultRole.role_id == role.id)) if not any(roles): return 'Role not configured' else: roles[0].delete_instance() return 'Removed default role "{0}"'.format(role_name)
def del_member_role(guild: discord.Guild, role_name: str) -> str: role = _get_role_by_name(guild, role_name) if role is None: return 'Role "{0}" doesn"t exists'.format(role.name) roles = (MemberRole.select().where(MemberRole.guild_id == guild.id, MemberRole.role_id == role.id)) if not any(roles): return 'Role not set' else: roles[0].delete_instance() return 'Removed member role "{0}"'.format(role.name)
def add_admin(guild: discord.Guild, rolename: str) -> str: role = _get_role_by_name(guild, rolename) if role is None: return 'Role "{0}" doesn"t exists in guild "{1}"'.format(role.name, guild.name) roles = (BotAdminRole .select() .where(BotAdminRole.guild_id == guild.id, BotAdminRole.role_id == role.id)) if not any(roles): BotAdminRole.create(guild_id=guild.id, role_id=role.id, role_name=role.name) return 'Added role "{0}" as bot admin'.format(role.name) return 'Role "{0}" already exists in guild "{1}"'.format(role.name, guild.name)
def add_member_role(guild: discord.Guild, role_name: str) -> str: role = _get_role_by_name(guild, role_name) if role is None: return 'Role "{0}" doesn"t exists'.format(role_name) roles = (MemberRole .select() .where(MemberRole.guild_id == guild.id, MemberRole.role_id == role.id)) if not any(roles): MemberRole.create(guild_id=guild.id, role_id=role.id, role_name=role.name) return 'Adding member role "{0}"'.format(role_name) else: return 'Role already configured'
def remove_admin(guild: discord.Guild, rolename) -> str: role = _get_role_by_name(guild, rolename) if role is None: return f'Role "{role.name}" doesn"t exists in guild "{guild.name}"' BotAdminRole.delete().where(BotAdminRole.guild_id == guild.id, BotAdminRole.role_id == role.id).execute() return f'Removed role "{role.name}" as bot admin'