-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.py
80 lines (70 loc) · 2.49 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import discord
from discord.ext import commands
from discord.ext.commands import CheckFailure
from gql.transport import exceptions as GQLExceptions
import json
from data import *
class BlacklistError(CheckFailure):
"""
Raised when a blacklisted user writes a command
"""
pass
async def check_user_in_blacklist(author):
with open("users.json", "r") as f:
users = json.load(f)
if author in users["blacklist"]:
return True
else:
return False
async def create_embed(
title="Command failed",
description="You don't have permission to use this command",
color=discord.Color.red(),
**kwargs,
):
"""Returns an embed"""
embed = discord.Embed(title=title, description=description, color=color, **kwargs)
return embed
async def handle_error(ctx, error, ephemeral=True):
if isinstance(error, commands.CommandOnCooldown):
await ctx.reply(
embed=await create_embed(
description="You're on cooldown for {:.1f}s".format(error.retry_after),
ephemeral=ephemeral,
)
)
elif isinstance(error, commands.DisabledCommand):
await ctx.reply(
embed=await create_embed(description="This command is disabled."),
ephemeral=ephemeral,
)
elif isinstance(error, GQLExceptions.TransportQueryError):
data = json.dumps(
error.message, sort_keys=True, indent=4, separators=(",", ": ")
)
await ctx.reply(
embed=await create_embed(
description=f"There was an error while attempting this query:\n```json\n{data}\n```"
),
ephemeral=ephemeral
)
elif isinstance(error, BlacklistError):
await ctx.reply(
embed=await create_embed(description="You are blacklisted from this bot."),
ephemeral=ephemeral,
)
else:
await ctx.reply(
embed=await create_embed(description=error), ephemeral=ephemeral
)
def is_developer():
"""Returns True when the user has either the Developer or the New developer role"""
async def predicate(ctx):
roles = [r.id for r in ctx.author.roles]
return ROLE_DEVELOPER in roles or ROLE_NEW_DEV in roles
return commands.check(predicate)
def GetDevelopers():
"""Get all the ID's of RCC developers in the Discord server"""
guild = bot.get_guild(GUILD_ID)
Devrole = discord.utils.get(guild.roles, id=ROLE_DEVELOPER)
return [m.id for m in Devrole.members]