mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-12-08 10:22:31 -05:00
[Core, Mod] Moved core functions to owner cog (#701)
Moved blacklist / whitelist functions to owner cog Moved [p]modset adminrole / modrole to [p]set command group Check mod/admin users against blacklist / whitelist: Users with (server or global) admin or mod role used to be able to skip the whitelist / blacklist checks. This doesn't really make sense from a design pov since these are global checks and the commands are owner only. [p]set adminrole/modrole: check that the role actually exists before adding it Added [p]blacklist/whitelist list, to show the members of each list
This commit is contained in:
47
red.py
47
red.py
@@ -156,38 +156,39 @@ class Bot(commands.Bot):
|
||||
if author == self.user:
|
||||
return self.settings.self_bot
|
||||
|
||||
mod = self.get_cog('Mod')
|
||||
mod_cog = self.get_cog('Mod')
|
||||
global_ignores = self.get_cog('Owner').global_ignores
|
||||
|
||||
if mod is not None:
|
||||
if self.settings.owner == author.id:
|
||||
return True
|
||||
if not message.channel.is_private:
|
||||
server = message.server
|
||||
names = (self.settings.get_server_admin(
|
||||
server), self.settings.get_server_mod(server))
|
||||
results = map(
|
||||
lambda name: discord.utils.get(author.roles, name=name),
|
||||
names)
|
||||
for r in results:
|
||||
if r is not None:
|
||||
return True
|
||||
if self.settings.owner == author.id:
|
||||
return True
|
||||
|
||||
if author.id in mod.blacklist_list:
|
||||
if author.id in global_ignores["blacklist"]:
|
||||
return False
|
||||
|
||||
if global_ignores["whitelist"]:
|
||||
if author.id not in global_ignores["whitelist"]:
|
||||
return False
|
||||
|
||||
if mod.whitelist_list:
|
||||
if author.id not in mod.whitelist_list:
|
||||
return False
|
||||
if not message.channel.is_private:
|
||||
server = message.server
|
||||
names = (self.settings.get_server_admin(
|
||||
server), self.settings.get_server_mod(server))
|
||||
results = map(
|
||||
lambda name: discord.utils.get(author.roles, name=name),
|
||||
names)
|
||||
for r in results:
|
||||
if r is not None:
|
||||
return True
|
||||
|
||||
if mod_cog is not None:
|
||||
if not message.channel.is_private:
|
||||
if message.server.id in mod.ignore_list["SERVERS"]:
|
||||
if message.server.id in mod_cog.ignore_list["SERVERS"]:
|
||||
return False
|
||||
|
||||
if message.channel.id in mod.ignore_list["CHANNELS"]:
|
||||
if message.channel.id in mod_cog.ignore_list["CHANNELS"]:
|
||||
return False
|
||||
return True
|
||||
else:
|
||||
return True
|
||||
|
||||
return True
|
||||
|
||||
async def pip_install(self, name, *, timeout=None):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user