|
|
@ -1,243 +0,0 @@
|
|
|
|
import discord
|
|
|
|
|
|
|
|
import asyncio
|
|
|
|
|
|
|
|
import os
|
|
|
|
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
from discord.ext import commands
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from .utils.dataIO import dataIO
|
|
|
|
|
|
|
|
from .utils import checks
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Immortal:
|
|
|
|
|
|
|
|
"""Creates a goodbye message when people leave"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self, bot):
|
|
|
|
|
|
|
|
self.bot = bot
|
|
|
|
|
|
|
|
self.path = "data/Fox-Cogs/immortal"
|
|
|
|
|
|
|
|
self.file_path = "data/Fox-Cogs/immortal/immortal.json"
|
|
|
|
|
|
|
|
self.the_data = dataIO.load_json(self.file_path)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def save_data(self):
|
|
|
|
|
|
|
|
"""Saves the json"""
|
|
|
|
|
|
|
|
dataIO.save_json(self.file_path, self.the_data)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def adj_roles(self, server, author, member: discord.Member=None, rrole_names=[], arole_names=[]):
|
|
|
|
|
|
|
|
# Thank you SML for the addrole code
|
|
|
|
|
|
|
|
# https://github.com/smlbiobot/SML-Cogs/tree/master/mm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rroles = [r for r in server.roles if r.name in rrole_names]
|
|
|
|
|
|
|
|
aroles = [r for r in server.roles if r.name in arole_names]
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
|
|
await self.bot.add_roles(member, *aroles)
|
|
|
|
|
|
|
|
await asyncio.sleep(0.5)
|
|
|
|
|
|
|
|
await self.bot.remove_roles(member, *rroles)
|
|
|
|
|
|
|
|
await asyncio.sleep(0.5)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
except discord.Forbidden:
|
|
|
|
|
|
|
|
await self.bot.say(
|
|
|
|
|
|
|
|
"{} does not have permission to edit {}’s roles.".format(
|
|
|
|
|
|
|
|
author.display_name, member.display_name))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
except discord.HTTPException:
|
|
|
|
|
|
|
|
await self.bot.say(
|
|
|
|
|
|
|
|
"Failed to adjust roles.")
|
|
|
|
|
|
|
|
except:
|
|
|
|
|
|
|
|
await self.bot.say("Unknown Exception")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@commands.command(pass_context=True, no_pm=True)
|
|
|
|
|
|
|
|
@checks.mod_or_permissions(manage_roles=True)
|
|
|
|
|
|
|
|
async def iresort(self, ctx, member: discord.Member=None):
|
|
|
|
|
|
|
|
"""Sends someone on vacation!"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if member is None:
|
|
|
|
|
|
|
|
await self.bot.send_cmd_help(ctx)
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
server = ctx.message.server
|
|
|
|
|
|
|
|
author = ctx.message.author
|
|
|
|
|
|
|
|
role_names = ["Member", "Immortal", "Eternal", "Phantom", "Ghost", "Undead", "Revenant", "Crypt", "Relocate", "Guest"]
|
|
|
|
|
|
|
|
arole_names = ["Resort"]
|
|
|
|
|
|
|
|
await self.adj_roles(server, author, member, role_names, arole_names)
|
|
|
|
|
|
|
|
if "Resort" in [r.name for r in member.roles]:
|
|
|
|
|
|
|
|
await self.bot.say("You are being sent on Vacation! :tada:" +
|
|
|
|
|
|
|
|
"Please relocate to Immortal Resort (#889L92UQ) when you find the time.")
|
|
|
|
|
|
|
|
await self.bot.send_message(member, "You are being sent on Vacation! :tada: Please relocate " +
|
|
|
|
|
|
|
|
"to Immortal Resort (#889L92UQ) when you find the time.\n" +
|
|
|
|
|
|
|
|
"You'll have limited access to the server until you rejoin a main clan")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@commands.command(pass_context=True, no_pm=True)
|
|
|
|
|
|
|
|
@checks.mod_or_permissions(manage_roles=True)
|
|
|
|
|
|
|
|
async def icrypt(self, ctx, member: discord.Member=None):
|
|
|
|
|
|
|
|
"""Sends someone to Crypt!"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if member is None:
|
|
|
|
|
|
|
|
await self.bot.send_cmd_help(ctx)
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
server = ctx.message.server
|
|
|
|
|
|
|
|
author = ctx.message.author
|
|
|
|
|
|
|
|
role_names = ["Immortal", "Eternal", "Ghost", "Phantom", "Revenant", "Undead", "Relocate", "Guest", "Resort"]
|
|
|
|
|
|
|
|
arole_names = ["Member", "Crypt"]
|
|
|
|
|
|
|
|
await self.adj_roles(server, author, member, role_names, arole_names)
|
|
|
|
|
|
|
|
if "Crypt" in [r.name for r in member.roles]:
|
|
|
|
|
|
|
|
await self.bot.say("Success")
|
|
|
|
|
|
|
|
await self.send_welcome(member)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@commands.command(pass_context=True, no_pm=True)
|
|
|
|
|
|
|
|
@checks.mod_or_permissions(manage_roles=True)
|
|
|
|
|
|
|
|
async def irevenant(self, ctx, member: discord.Member=None):
|
|
|
|
|
|
|
|
"""Sends someone to Revenant!"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if member is None:
|
|
|
|
|
|
|
|
await self.bot.send_cmd_help(ctx)
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
server = ctx.message.server
|
|
|
|
|
|
|
|
author = ctx.message.author
|
|
|
|
|
|
|
|
role_names = ["Immortal", "Eternal", "Ghost", "Phantom", "Undead", "Crypt", "Relocate", "Guest", "Resort"]
|
|
|
|
|
|
|
|
arole_names = ["Member", "Revenant"]
|
|
|
|
|
|
|
|
await self.adj_roles(server, author, member, role_names, arole_names)
|
|
|
|
|
|
|
|
if "Revenant" in [r.name for r in member.roles]:
|
|
|
|
|
|
|
|
await self.bot.say("Success")
|
|
|
|
|
|
|
|
await self.send_welcome(member)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@commands.command(pass_context=True, no_pm=True)
|
|
|
|
|
|
|
|
@checks.mod_or_permissions(manage_roles=True)
|
|
|
|
|
|
|
|
async def iundead(self, ctx, member: discord.Member=None):
|
|
|
|
|
|
|
|
"""Sends someone to Undead!"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if member is None:
|
|
|
|
|
|
|
|
await self.bot.send_cmd_help(ctx)
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
server = ctx.message.server
|
|
|
|
|
|
|
|
author = ctx.message.author
|
|
|
|
|
|
|
|
role_names = ["Immortal", "Eternal", "Ghost", "Phantom", "Revenant", "Crypt", "Relocate", "Guest", "Resort"]
|
|
|
|
|
|
|
|
arole_names = ["Member", "Undead"]
|
|
|
|
|
|
|
|
await self.adj_roles(server, author, member, role_names, arole_names)
|
|
|
|
|
|
|
|
if "Undead" in [r.name for r in member.roles]:
|
|
|
|
|
|
|
|
await self.bot.say("Success")
|
|
|
|
|
|
|
|
await self.send_welcome(member)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@commands.command(pass_context=True, no_pm=True)
|
|
|
|
|
|
|
|
@checks.mod_or_permissions(manage_roles=True)
|
|
|
|
|
|
|
|
async def iphantom(self, ctx, member: discord.Member=None):
|
|
|
|
|
|
|
|
"""Sends someone to Phantom!"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if member is None:
|
|
|
|
|
|
|
|
await self.bot.send_cmd_help(ctx)
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
server = ctx.message.server
|
|
|
|
|
|
|
|
author = ctx.message.author
|
|
|
|
|
|
|
|
role_names = ["Immortal", "Eternal", "Ghost", "Undead", "Revenant", "Crypt", "Relocate", "Guest", "Resort"]
|
|
|
|
|
|
|
|
arole_names = ["Member", "Phantom"]
|
|
|
|
|
|
|
|
await self.adj_roles(server, author, member, role_names, arole_names)
|
|
|
|
|
|
|
|
if "Phantom" in [r.name for r in member.roles]:
|
|
|
|
|
|
|
|
await self.bot.say("Success")
|
|
|
|
|
|
|
|
await self.send_welcome(member)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@commands.command(pass_context=True, no_pm=True)
|
|
|
|
|
|
|
|
@checks.mod_or_permissions(manage_roles=True)
|
|
|
|
|
|
|
|
async def ieternal(self, ctx, member: discord.Member=None):
|
|
|
|
|
|
|
|
"""Sends someone to Eternal!"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if member is None:
|
|
|
|
|
|
|
|
await self.bot.send_cmd_help(ctx)
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
server = ctx.message.server
|
|
|
|
|
|
|
|
author = ctx.message.author
|
|
|
|
|
|
|
|
role_names = ["Immortal", "Phantom", "Ghost", "Undead", "Revenant", "Crypt", "Relocate", "Guest", "Resort"]
|
|
|
|
|
|
|
|
arole_names = ["Member", "Eternal"]
|
|
|
|
|
|
|
|
await self.adj_roles(server, author, member, role_names, arole_names)
|
|
|
|
|
|
|
|
if "Eternal" in [r.name for r in member.roles]:
|
|
|
|
|
|
|
|
await self.bot.say("Success")
|
|
|
|
|
|
|
|
await self.send_welcome(member)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@commands.command(pass_context=True, no_pm=True)
|
|
|
|
|
|
|
|
@checks.mod_or_permissions(manage_roles=True)
|
|
|
|
|
|
|
|
async def iimmortal(self, ctx, member: discord.Member=None):
|
|
|
|
|
|
|
|
"""Sends someone to Immortal!"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if member is None:
|
|
|
|
|
|
|
|
await self.bot.send_cmd_help(ctx)
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
server = ctx.message.server
|
|
|
|
|
|
|
|
author = ctx.message.author
|
|
|
|
|
|
|
|
role_names = ["Eternal", "Phantom", "Ghost", "Undead", "Revenant", "Crypt", "Relocate", "Guest", "Resort"]
|
|
|
|
|
|
|
|
arole_names = ["Member", "Immortal"]
|
|
|
|
|
|
|
|
await self.adj_roles(server, author, member, role_names, arole_names)
|
|
|
|
|
|
|
|
if "Immortal" in [r.name for r in member.roles]:
|
|
|
|
|
|
|
|
await self.bot.say("Success")
|
|
|
|
|
|
|
|
await self.send_welcome(member)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@commands.group(aliases=['setimmortal'], pass_context=True, no_pm=True)
|
|
|
|
|
|
|
|
@checks.mod_or_permissions(administrator=True)
|
|
|
|
|
|
|
|
async def immortalset(self, ctx):
|
|
|
|
|
|
|
|
"""Adjust immortal settings"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
server = ctx.message.server
|
|
|
|
|
|
|
|
if server.id not in self.the_data:
|
|
|
|
|
|
|
|
self.the_data[server.id] = {}
|
|
|
|
|
|
|
|
self.save_data()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ctx.invoked_subcommand is None:
|
|
|
|
|
|
|
|
await self.bot.send_cmd_help(ctx)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@immortalset.command(pass_context=True, no_pm=True)
|
|
|
|
|
|
|
|
async def welcomechannel(self, ctx):
|
|
|
|
|
|
|
|
server = ctx.message.server
|
|
|
|
|
|
|
|
if 'WELCOMECHANNEL' not in self.the_data[server.id]:
|
|
|
|
|
|
|
|
self.the_data[server.id]['WELCOMECHANNEL'] = ''
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.the_data[server.id]['WELCOMECHANNEL'] = ctx.message.channel.id
|
|
|
|
|
|
|
|
self.save_data()
|
|
|
|
|
|
|
|
await self.bot.say("Welcome Channel set to "+ctx.message.channel.name)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def send_welcome(self, member):
|
|
|
|
|
|
|
|
server = member.server
|
|
|
|
|
|
|
|
if server.id in self.the_data:
|
|
|
|
|
|
|
|
await self.bot.send_message(server.get_channel(self.the_data[server.id]['WELCOMECHANNEL']),
|
|
|
|
|
|
|
|
"You now have access to the server, " + member.mention + "\n" +
|
|
|
|
|
|
|
|
"Check " + server.get_channel("257557008662790145").mention + " & " +
|
|
|
|
|
|
|
|
server.get_channel("257560603093106688").mention+" for clan rules etc.\n" +
|
|
|
|
|
|
|
|
"We recommend turning all message notifications on for " + server.get_channel("257560603093106688").mention +
|
|
|
|
|
|
|
|
" if you want to know when tourneys are posted and other important info.\n" +
|
|
|
|
|
|
|
|
"You can also type `!help` for a list of bot commands/features.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# @immortalset.command(pass_context=True)
|
|
|
|
|
|
|
|
# async def channel(self, ctx):
|
|
|
|
|
|
|
|
# server = ctx.message.server
|
|
|
|
|
|
|
|
# if 'channel' not in self.the_data[server.id]:
|
|
|
|
|
|
|
|
# self.the_data[server.id]['channel'] = ''
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# self.the_data[server.id]['channel'] = ctx.message.channel.id
|
|
|
|
|
|
|
|
# self.save_data()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# async def _when_leave(self, member):
|
|
|
|
|
|
|
|
# server = member.server
|
|
|
|
|
|
|
|
# if server.id not in self.the_data:
|
|
|
|
|
|
|
|
# return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# await self.bot.say("YOU LEFT ME "+member.mention)
|
|
|
|
|
|
|
|
# self.the_data[server.id]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def check_folders():
|
|
|
|
|
|
|
|
if not os.path.exists("data/Fox-Cogs"):
|
|
|
|
|
|
|
|
print("Creating data/Fox-Cogs folder...")
|
|
|
|
|
|
|
|
os.makedirs("data/Fox-Cogs")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if not os.path.exists("data/Fox-Cogs/immortal"):
|
|
|
|
|
|
|
|
print("Creating data/Fox-Cogs/immortal folder...")
|
|
|
|
|
|
|
|
os.makedirs("data/Fox-Cogs/immortal")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def check_files():
|
|
|
|
|
|
|
|
if not dataIO.is_valid_json("data/Fox-Cogs/immortal/immortal.json"):
|
|
|
|
|
|
|
|
dataIO.save_json("data/Fox-Cogs/immortal/immortal.json", {})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def setup(bot):
|
|
|
|
|
|
|
|
check_folders()
|
|
|
|
|
|
|
|
check_files()
|
|
|
|
|
|
|
|
q = Immortal(bot)
|
|
|
|
|
|
|
|
bot.add_cog(q)
|
|
|
|
|