|
|
|
|
|
|
|
|
blacklist_amount += 1 |
|
|
blacklist_amount += 1 |
|
|
return await self.bot.say('{} user(s) have been removed from the blacklist'.format(blacklist_amount)) |
|
|
return await self.bot.say('{} user(s) have been removed from the blacklist'.format(blacklist_amount)) |
|
|
|
|
|
|
|
|
@bot.command(pass_context=True) |
|
|
|
|
|
@checks.is_owner_or_admin() |
|
|
|
|
|
async def enablesetting(self, ctx, setting): |
|
|
|
|
|
"OWNER OR ADMIN ONLY: Enables settings in the server config." |
|
|
|
|
|
self.serverconfig = self.con.load_config() |
|
|
|
|
|
server_id = ctx.message.server.id |
|
|
|
|
|
if setting in self.serverconfig[server_id]: |
|
|
|
|
|
if not self.serverconfig[server_id][setting]["enabled"]: |
|
|
|
|
|
self.serverconfig[server_id][setting]["enabled"] = 1 |
|
|
|
|
|
self.con.update_config(self.serverconfig) |
|
|
|
|
|
return await self.bot.say("'{}' was enabled!".format(setting)) |
|
|
|
|
|
else: |
|
|
|
|
|
self.serverconfig[server_id][setting]["enabled"] = 0 |
|
|
|
|
|
self.con.update_config(self.serverconfig) |
|
|
|
|
|
return await self.bot.say("'{}' was disabled :cry:".format(setting)) |
|
|
|
|
|
|
|
|
@bot.command(pass_context=True, hidden=True, aliases=["setava", "setavatar"]) |
|
|
|
|
|
@checks.is_bot_owner() |
|
|
|
|
|
async def changeavatar(self, ctx, url=None): |
|
|
|
|
|
""" |
|
|
|
|
|
Usage: |
|
|
|
|
|
{command_prefix}setavatar [url] |
|
|
|
|
|
Changes the bot's avatar. |
|
|
|
|
|
Attaching a file and leaving the url parameter blank also works. |
|
|
|
|
|
""" |
|
|
|
|
|
if ctx.message.attachments: |
|
|
|
|
|
thing = ctx.message.attachments[0]['url'] |
|
|
else: |
|
|
else: |
|
|
return await self.bot.say("That module dont exist fam. You made the thing") |
|
|
|
|
|
|
|
|
thing = url.strip('<>') |
|
|
|
|
|
|
|
|
|
|
|
avaimg = 'avaimg' |
|
|
|
|
|
async with aiohttp.ClientSession() as session: |
|
|
|
|
|
async with session.get(thing) as img: |
|
|
|
|
|
with open(avaimg, 'wb') as f: |
|
|
|
|
|
f.write(await img.read()) |
|
|
|
|
|
with open(avaimg, 'rb') as f: |
|
|
|
|
|
await self.bot.edit_profile(avatar=f.read()) |
|
|
|
|
|
os.remove(avaimg) |
|
|
|
|
|
asyncio.sleep(2) |
|
|
|
|
|
return await self.bot.say(":ok_hand:") |
|
|
|
|
|
|
|
|
|
|
|
@bot.command(pass_context=True, hidden=True, aliases=["nick"]) |
|
|
|
|
|
@checks.is_bot_owner() |
|
|
|
|
|
async def changenickname(self, ctx, *nick): |
|
|
|
|
|
if ctx.message.channel.permissions_for(ctx.message.server.me).change_nickname: |
|
|
|
|
|
await self.bot.change_nickname(ctx.message.server.me, ' '.join(nick)) |
|
|
|
|
|
return await self.bot.say(":thumbsup:") |
|
|
|
|
|
else: |
|
|
|
|
|
return await self.bot.say("I don't have permission to do that :sob:", delete_after=self.con.delete_after) |
|
|
|
|
|
|
|
|
|
|
|
@bot.command(pass_context=True, hidden=True, aliases=["setgame", "game"]) |
|
|
|
|
|
@checks.is_bot_owner() |
|
|
|
|
|
async def changegame(self, ctx, *, game: str): |
|
|
|
|
|
if game.lower() == "none": |
|
|
|
|
|
game_name = None |
|
|
|
|
|
else: |
|
|
|
|
|
game_name = discord.Game(name=game, type=0) |
|
|
|
|
|
await self.bot.change_presence(game=game_name, afk=False) |
|
|
|
|
|
return await self.bot.say(":ok_hand: Game set to {}".format(str(game_name))) |
|
|
|
|
|
|
|
|
|
|
|
@bot.command(pass_context=True, hidden=True, aliases=["status"]) |
|
|
|
|
|
@checks.is_bot_owner() |
|
|
|
|
|
async def changestatus(self, ctx, status: str): |
|
|
|
|
|
status = status.lower() |
|
|
|
|
|
if status == 'offline' or status == 'invisible': |
|
|
|
|
|
discordStatus = discord.Status.invisible |
|
|
|
|
|
elif status == 'idle': |
|
|
|
|
|
discordStatus = discord.Status.idle |
|
|
|
|
|
elif status == 'dnd': |
|
|
|
|
|
discordStatus = discord.Status.dnd |
|
|
|
|
|
else: |
|
|
|
|
|
discordStatus = discord.Status.online |
|
|
|
|
|
await self.bot.change_presence(status=discordStatus) |
|
|
|
|
|
await self.bot.say("**:ok:** Status set to {}".format(discordStatus)) |
|
|
|
|
|
|
|
|
|
|
|
@bot.command(hidden=True) |
|
|
|
|
|
@checks.is_bot_owner() |
|
|
|
|
|
async def restart(self): |
|
|
|
|
|
await self.bot.logout() |
|
|
|
|
|
return os.execl(sys.executable, sys.executable, *sys.argv) |
|
|
|
|
|
|
|
|
|
|
|
@bot.command(hidden=True) |
|
|
|
|
|
@checks.is_bot_owner() |
|
|
|
|
|
async def shutdown(self): |
|
|
|
|
|
await self.bot.logout() |
|
|
|
|
|
return exit(0) |
|
|
|
|
|
|
|
|
|
|
|
@bot.command(pass_context=True, hidden=True) |
|
|
|
|
|
@checks.is_bot_owner() |
|
|
|
|
|
async def announce(self, ctx, *announcement): |
|
|
|
|
|
""" |
|
|
|
|
|
ONLY USE FOR SERIOUS ANNOUNCEMENTS |
|
|
|
|
|
""" |
|
|
|
|
|
# TODO: Make colour top level role colour |
|
|
|
|
|
# TODO: Custom message for annoucement footer |
|
|
|
|
|
embed = discord.Embed(title="RoxBot Announcement", colour=discord.Colour(0x306f99), description=' '.join(announcement)) |
|
|
|
|
|
embed.set_footer(text="This message has be automatically generated by a cute ass Roxie", |
|
|
|
|
|
icon_url=self.bot.user.avatar_url) |
|
|
|
|
|
for server in self.bot.servers: |
|
|
|
|
|
await self.bot.send_message(server, embed=embed) |
|
|
|
|
|
return await self.bot.say("Done!", delete_after=self.con.delete_after) |
|
|
|
|
|
|
|
|
@bot.command(pass_context=True) |
|
|
@bot.command(pass_context=True) |
|
|
@checks.is_owner_or_admin() |
|
|
@checks.is_owner_or_admin() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return await self.bot.say(embed=em) |
|
|
return await self.bot.say(embed=em) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@group(pass_context=True) |
|
|
|
|
|
async def settings(self, ctx): |
|
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
@settings.command(pass_context=True) |
|
|
|
|
|
async def self_assign(self, ctx, selection, *, changes = None): |
|
|
|
|
|
if selection == "enable": |
|
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@bot.command(pass_context=True) |
|
|
|
|
|
@checks.is_owner_or_admin() |
|
|
|
|
|
async def enablesetting(self, ctx, setting): |
|
|
|
|
|
"OWNER OR ADMIN ONLY: Enables settings in the server config." |
|
|
|
|
|
self.serverconfig = self.con.load_config() |
|
|
|
|
|
server_id = ctx.message.server.id |
|
|
|
|
|
if setting in self.serverconfig[server_id]: |
|
|
|
|
|
if not self.serverconfig[server_id][setting]["enabled"]: |
|
|
|
|
|
self.serverconfig[server_id][setting]["enabled"] = 1 |
|
|
|
|
|
self.con.update_config(self.serverconfig) |
|
|
|
|
|
return await self.bot.say("'{}' was enabled!".format(setting)) |
|
|
|
|
|
else: |
|
|
|
|
|
self.serverconfig[server_id][setting]["enabled"] = 0 |
|
|
|
|
|
self.con.update_config(self.serverconfig) |
|
|
|
|
|
return await self.bot.say("'{}' was disabled :cry:".format(setting)) |
|
|
|
|
|
else: |
|
|
|
|
|
return await self.bot.say("That module dont exist fam. You made the thing") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@group(pass_context=True, hidden=True) |
|
|
@group(pass_context=True, hidden=True) |
|
|
@checks.is_bot_owner() |
|
|
@checks.is_bot_owner() |
|
|
async def set(self, ctx): |
|
|
async def set(self, ctx): |
|
|
|
|
|
|
|
|
self.con.update_config(self.servers) |
|
|
self.con.update_config(self.servers) |
|
|
return await self.bot.say("'{}' has been removed from the Mod role list.".format(role.name)) |
|
|
return await self.bot.say("'{}' has been removed from the Mod role list.".format(role.name)) |
|
|
|
|
|
|
|
|
@bot.command(pass_context=True, hidden=True, aliases=["setava", "setavatar"]) |
|
|
|
|
|
@checks.is_bot_owner() |
|
|
|
|
|
async def changeavatar(self, ctx, url=None): |
|
|
|
|
|
""" |
|
|
|
|
|
Usage: |
|
|
|
|
|
{command_prefix}setavatar [url] |
|
|
|
|
|
Changes the bot's avatar. |
|
|
|
|
|
Attaching a file and leaving the url parameter blank also works. |
|
|
|
|
|
""" |
|
|
|
|
|
if ctx.message.attachments: |
|
|
|
|
|
thing = ctx.message.attachments[0]['url'] |
|
|
|
|
|
else: |
|
|
|
|
|
thing = url.strip('<>') |
|
|
|
|
|
|
|
|
|
|
|
avaimg = 'avaimg' |
|
|
|
|
|
async with aiohttp.ClientSession() as session: |
|
|
|
|
|
async with session.get(thing) as img: |
|
|
|
|
|
with open(avaimg, 'wb') as f: |
|
|
|
|
|
f.write(await img.read()) |
|
|
|
|
|
with open(avaimg, 'rb') as f: |
|
|
|
|
|
await self.bot.edit_profile(avatar=f.read()) |
|
|
|
|
|
os.remove(avaimg) |
|
|
|
|
|
asyncio.sleep(2) |
|
|
|
|
|
return await self.bot.say(":ok_hand:") |
|
|
|
|
|
|
|
|
|
|
|
@bot.command(pass_context=True, hidden=True, aliases=["nick"]) |
|
|
|
|
|
@checks.is_bot_owner() |
|
|
|
|
|
async def changenickname(self, ctx, *nick): |
|
|
|
|
|
if ctx.message.channel.permissions_for(ctx.message.server.me).change_nickname: |
|
|
|
|
|
await self.bot.change_nickname(ctx.message.server.me, ' '.join(nick)) |
|
|
|
|
|
return await self.bot.say(":thumbsup:") |
|
|
|
|
|
else: |
|
|
|
|
|
return await self.bot.say("I don't have permission to do that :sob:", delete_after=self.con.delete_after) |
|
|
|
|
|
|
|
|
|
|
|
@bot.command(pass_context=True, hidden=True, aliases=["setgame", "game"]) |
|
|
|
|
|
@checks.is_bot_owner() |
|
|
|
|
|
async def changegame(self, ctx, *, game: str): |
|
|
|
|
|
if game.lower() == "none": |
|
|
|
|
|
game_name = None |
|
|
|
|
|
else: |
|
|
|
|
|
game_name = discord.Game(name=game, type=0) |
|
|
|
|
|
await self.bot.change_presence(game=game_name, afk=False) |
|
|
|
|
|
return await self.bot.say(":ok_hand: Game set to {}".format(str(game_name))) |
|
|
|
|
|
|
|
|
|
|
|
@bot.command(pass_context=True, hidden=True, aliases=["status"]) |
|
|
|
|
|
@checks.is_bot_owner() |
|
|
|
|
|
async def changestatus(self, ctx, status: str): |
|
|
|
|
|
status = status.lower() |
|
|
|
|
|
if status == 'offline' or status == 'invisible': |
|
|
|
|
|
discordStatus = discord.Status.invisible |
|
|
|
|
|
elif status == 'idle': |
|
|
|
|
|
discordStatus = discord.Status.idle |
|
|
|
|
|
elif status == 'dnd': |
|
|
|
|
|
discordStatus = discord.Status.dnd |
|
|
|
|
|
else: |
|
|
|
|
|
discordStatus = discord.Status.online |
|
|
|
|
|
await self.bot.change_presence(status=discordStatus) |
|
|
|
|
|
await self.bot.say("**:ok:** Status set to {}".format(discordStatus)) |
|
|
|
|
|
|
|
|
|
|
|
@bot.command(hidden=True) |
|
|
|
|
|
@checks.is_bot_owner() |
|
|
|
|
|
async def restart(self): |
|
|
|
|
|
await self.bot.logout() |
|
|
|
|
|
return os.execl(sys.executable, sys.executable, *sys.argv) |
|
|
|
|
|
|
|
|
|
|
|
@bot.command(hidden=True) |
|
|
|
|
|
@checks.is_bot_owner() |
|
|
|
|
|
async def shutdown(self): |
|
|
|
|
|
await self.bot.logout() |
|
|
|
|
|
return exit(0) |
|
|
|
|
|
|
|
|
|
|
|
@bot.command(pass_context=True, hidden=True) |
|
|
|
|
|
@checks.is_bot_owner() |
|
|
|
|
|
async def announce(self, ctx, *announcement): |
|
|
|
|
|
""" |
|
|
|
|
|
ONLY USE FOR SERIOUS ANNOUNCEMENTS |
|
|
|
|
|
""" |
|
|
|
|
|
# TODO: Make colour top level role colour |
|
|
|
|
|
# TODO: Custom message for annoucement footer |
|
|
|
|
|
embed = discord.Embed(title="RoxBot Announcement", colour=discord.Colour(0x306f99), description=' '.join(announcement)) |
|
|
|
|
|
embed.set_footer(text="This message has be automatically generated by a cute ass Roxie", |
|
|
|
|
|
icon_url=self.bot.user.avatar_url) |
|
|
|
|
|
for server in self.bot.servers: |
|
|
|
|
|
await self.bot.send_message(server, embed=embed) |
|
|
|
|
|
return await self.bot.say("Done!", delete_after=self.con.delete_after) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def setup(Bot): |
|
|
def setup(Bot): |