Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- main.py
- import discord,os,random,base64,datetime,time,variables,asyncio,probability,wikipedia,traveldicts,func,safaridicts
- client = discord.Client()
- @client.event
- async def on_ready():
- print("I'm in")
- print(client.user)
- @client.event
- async def on_message(message):
- with open('saved.txt','r') as f:
- lines = f.read().split('\n')
- cctexts = []
- ccnames = []
- arnames = []
- artexts = []
- for x in lines:
- arglist = x.split(' ',2)
- try:
- if arglist[0] == 'cc':
- ccnames.append(arglist[1])
- cctexts.append(arglist[2])
- else:
- arnames.append(arglist[1])
- artexts.append(arglist[2])
- except:
- print('Null')
- if message.author.bot or len(message.content) == 0:
- return
- if message.content[0] == '&':
- command = message.content[1:]
- callword = command.split(' ')[0].strip()
- try:
- args = command.split(' ',1)[1].strip()
- except:
- args = ' '
- def check(callist):
- if callword in callist:
- return True
- else:
- return False
- def staff():
- if message.guild.get_role(573982745835995148) in message.author.roles:
- return True
- else:
- return False
- if check(['say']) and staff():
- await message.channel.send(args)
- await message.delete()
- elif check(['remotesay','rsay']) and staff():
- channel = message.channel_mentions[0]
- if args.startswith('<#{}>'.format(channel.id)):
- content = args.split(' ',1)[1]
- await channel.send(content)
- elif check(ccnames):
- await message.channel.send(cctexts
- [ccnames.index(callword)])
- elif check(['pin']) and staff():
- msg = await message.channel.send(args)
- await message.delete()
- await msg.pin()
- elif check(['topic']) and staff():
- await message.channel.edit(topic=args)
- await message.delete()
- elif check(['channame']) and staff():
- await message.channel.edit(name=args)
- await message.delete()
- elif check(['roleid']) and staff():
- try:
- role = discord.utils.get(message.guild.roles, name=args)
- roleid = role.id
- await message.channel.send('Role ID For ' + args + ': ' + str(roleid))
- except:
- await message.channel.send('That is not the full name of a role!')
- elif check(['channelid']) and staff():
- try:
- channel = message.channel_mentions[0]
- chanid = channel.id
- await message.channel.send('Channel ID For <#' + str(chanid) + '>: ' + str(chanid))
- except:
- await message.channel.send('Channel Not Found')
- elif check(['userid']) and staff():
- try:
- user = discord.utils.get(message.guild.members, name=args)
- await message.channel.send('User ID For ' + args + ': ' + str(user.id))
- except:
- await message.channel.send('That is not the full name of a role!')
- elif check(['unpin']) and staff():
- pins = await message.channel.pins()
- for x in pins:
- await x.unpin()
- await message.delete()
- elif check(['b64','base64']):
- if args.split(' ')[0] == 'enc':
- force = args[3:]
- msg = base64.b64encode(force.encode()).decode("utf-8")
- else:
- try:
- msg = base64.b64decode(args.encode()).decode("utf-8")
- except:
- msg = base64.b64encode(args.encode()).decode("utf-8")
- await message.channel.send(msg)
- elif check(['poll']) and staff():
- await message.add_reaction('👍')
- await message.add_reaction('👎')
- elif check(['randint']) and staff():
- try:
- num1 = int(args.split('-',1)[0])
- num2 = int(args.split('-',1)[1]) + 1
- randnum = random.randint(num1,num2)
- msg = 'Random Number From ' + args + ': ' + str(randnum)
- except:
- msg = 'There was something wrong! Check format (&randint #-#)'
- finally:
- await message.channel.send(msg)
- elif check(['choose']) and staff():
- choice = probability.Choose(args)
- await message.channel.send(choice.choice)
- elif check(['shuffle']) and staff():
- shuffled = probability.Shuffle(args)
- await message.channel.send(shuffled.shufled)
- elif check(['pickn']) and staff():
- pickn = probability.PickN(args)
- await message.channel.send(pickn.pickn)
- elif check(['purge','prune']) and staff():
- await message.delete()
- prune = await message.channel.purge(limit=int(args))
- msg = 'Deleted {} message(s)'.format(len(prune))
- mesg = await message.channel.send(msg)
- await asyncio.sleep(5)
- await mesg.delete()
- elif check(['timer','stopwatch']) and message.author not in variables.stopwatchlist:
- variables.stopwatchlist.append(message.author)
- start = time.time()
- await message.channel.send('Timer Started! Use &{} to end the timer'.format(callword))
- def check(m):
- return m.content == '&{}'.format(callword) and m.channel == message.channel
- await client.wait_for('message', check=check)
- stop = time.time()
- diff = stop - start
- rawtime = datetime.datetime.utcfromtimestamp(diff)
- formatted = rawtime.strftime('Time: %H:%M:%S')
- await message.channel.send(formatted)
- variables.stopwatchlist.remove(message.author)
- elif check(['replace']) and staff():
- arglist = args.split(' ',3)
- skey = arglist[0]
- rkey = arglist[1]
- string = arglist[2]
- string2 = string.replace(skey,rkey)
- await message.channel.send(string2)
- elif check(['scramble']) and staff():
- phrase = args.strip(' ').lower()
- letterlist = []
- for x in phrase:
- letterlist.append(x)
- newll = random.sample(letterlist,len(letterlist))
- msg = ''.join(newll)
- await message.channel.send(msg)
- elif check(['calc','calculator','calculate','math','maths']) and staff():
- try:
- import calc
- msg = calc.calc(command[5:])
- await message.channel.send(args + ' = ' + msg)
- except:
- await message.channel.send('Calculator is currently down')
- print('calc down' + str(datetime.datetime.now()))
- elif check(['nick','botnick','botname']) and staff():
- newnick = command[4:].strip()
- await message.guild.me.edit(nick=newnick)
- elif check(['lower']) and staff():
- await message.channel.send(args.lower())
- elif check(['addmember']) and staff():
- person = 0
- for x in message.guild.members:
- if x.name.startswith(args):
- person = x
- break
- if person == 0:
- return
- if message.channel.overwrites_for(person).read_messages != True and person != None:
- overwrite = discord.PermissionOverwrite()
- overwrite.read_messages = True
- await message.channel.set_permissions(person,overwrite=overwrite)
- await message.delete()
- elif check(['addrole']) and staff():
- for x in message.guild.roles:
- if x.name.startswith(args):
- person = x
- break
- if message.channel.overwrites_for(person).read_messages != True and person != None:
- overwrite = discord.PermissionOverwrite()
- overwrite.read_messages = True
- await message.channel.set_permissions(person,overwrite=overwrite)
- await message.delete()
- elif check(['removemember']) and staff():
- for x in message.guild.members:
- if x.name.startswith(args):
- person = x
- break
- if message.channel.overwrites_for(person).read_messages == True and person != None:
- await message.channel.set_permissions(person,overwrite=None)
- await message.delete()
- elif check(['removerole']) and staff():
- for x in message.guild.roles:
- if x.name.startswith(args):
- person = x
- break
- if message.channel.overwrites_for(person).read_messages == True and person != None:
- await message.channel.set_permissions(person,overwrite=None)
- await message.delete()
- elif check(['role']) and staff():
- arglist = args.split(' ',2)
- for x in arglist:
- arglist[arglist.index(x)] = x.strip()
- if arglist[0].startswith('<!@'):
- person = message.guild.get_member(int(arglist[0][4:22]))
- else:
- person = 0
- for x in message.guild.roles:
- if x.name.lower().startswith(arglist[1].lower()) and arglist[0].lower().strip() == 'in':
- person = x
- break
- if person == 0:
- for x in message.guild.members:
- if x.name.lower().startswith(arglist[0].lower()):
- person = x
- break
- if person == 0:
- await message.channel.send('Could not find {}'.format(arglist[0]))
- return
- if person in message.guild.roles:
- if len(arglist) <= 2:
- return
- rolestrlist = args.split(' ',2)[2].split(',')
- if person in message.guild.members:
- if len(arglist) <= 1:
- return
- rolestrlist = args.split(' ',1)[1].split(',')
- for x in range(0,len(rolestrlist)):
- rolestrlist[x] = rolestrlist[x].strip()
- rolelist = []
- for x in rolestrlist:
- if x[0] in ['+','-']:
- checkvar = 0
- for y in message.guild.roles:
- if y.name.lower().startswith(x[1:].lower().strip()):
- checkvar = 1
- rolelist.append(y)
- break
- if checkvar == 0:
- await message.channel.send('Could not find {}'.format(x[1:]))
- return
- break
- else:
- checkvar = 0
- for y in message.guild.roles:
- if y.name.lower().startswith(x.strip().lower()):
- checkvar = 1
- rolelist.append(y)
- break
- if checkvar == 0:
- await message.channel.send('Could not find {}'.format(x))
- return
- break
- for x in range(0,len(rolestrlist)):
- rolestr = rolestrlist[x].strip()
- if rolestr[0] == '+':
- if person in message.guild.roles:
- for y in person.members:
- await y.add_roles(rolelist[x])
- else:
- await person.add_roles(rolelist[x])
- elif rolestr[0] == '-':
- if person in message.guild.roles:
- for y in person.members:
- await y.remove_roles(rolelist[x])
- else:
- await person.remove_roles(rolelist[x])
- else:
- if person in message.guild.roles:
- for y in person.members:
- if rolelist[x] in y.roles:
- await y.remove_roles(rolelist[x])
- else:
- await y.add_roles(rolelist[x])
- else:
- if rolelist[x] in person.roles:
- await person.remove_roles(rolelist[x])
- else:
- await person.add_roles(rolelist[x])
- elif check(['lockdown']) and staff():
- if message.channel.overwrites_for(message.guild.default_role).send_messages != False:
- overwrite = message.channel.overwrites_for(message.guild.default_role)
- overwrite.send_messages = False
- else:
- overwrite = message.channel.overwrites_for(message.guild.default_role)
- overwrite.send_messages = None
- await message.channel.set_permissions(message.guild.default_role,overwrite=overwrite)
- elif check(['wiki']):
- result = wikipedia.search(args)[0]
- page = wikipedia.page(result)
- embed = discord.Embed(title=page.title,url=page.url,description=wikipedia.summary(page,sentences=3))
- embed.set_thumbnail(url=page.images[0])
- embed.set_footer(text="Provided by Wikipedia, the free internet encyclopedia")
- await message.channel.send(embed=embed)
- elif check(['go']) and message.channel.id in traveldicts.safari_ids.values() and func.capitalize(args) in traveldicts.safari_ids.keys():
- for x in traveldicts.safari_ids.keys():
- if traveldicts.safari_ids[x] == message.channel.id:
- location = x
- break
- def check(m):
- return m.author == message.author
- await message.channel.purge(check=check)
- want = func.capitalize(args)
- wantid = traveldicts.safari_ids[want]
- if want in traveldicts.safari_moves[location]:
- wantchan = client.get_channel(wantid)
- overwrite = discord.PermissionOverwrite(read_messages=True)
- await wantchan.set_permissions(message.author,overwrite=overwrite)
- await message.channel.set_permissions(message.author,overwrite=None)
- elif check(['adventure']):
- for x,y in traveldicts.safari_ids.items():
- if y == message.channel.id:
- location = x
- break
- if location in traveldicts.safari_adventures.keys():
- locationid = traveldicts.safari_adventures[location]
- await message.channel.set_permissions(message.author,overwrite=None)
- await client.get_channel(locationid).set_permissions(message.author,overwrite=discord.PermissionOverwrite(read_messages=True))
- def check(m):
- return m.author == message.author
- await message.channel.purge(check=check)
- elif check(['resetsaf']) and staff():
- for x,y in traveldicts.safari_ids.items():
- async for z in client.get_channel(y).history():
- await z.delete()
- loclist = traveldicts.safari_moves[x]
- loctextlist = []
- await client.get_channel(y).send(traveldicts.safari_pictures[x])
- for a in loclist:
- loctextlist.append('To go to **{0}**, use `&go {0}`.'.format(a))
- if x in traveldicts.safari_adventures.keys():
- loctextlist.append('There is an adventure here! Use `&adventure` to start it!')
- loctext = '\n'.join(loctextlist)
- await client.get_channel(y).send(loctext)
- overdict = client.get_channel(y).overwrites
- for b in overdict.keys():
- if b in message.guild.members:
- await client.get_channel(y).set_permissions(b,overwrite=None)
- await client.get_channel(y).set_permissions(message.guild.default_role,overwrite=discord.PermissionOverwrite(read_messages=False))
- elif check(safaridicts.commands.keys()):
- if safaridicts.commands[callword][0] == message.channel.id:
- def check(m):
- return m.author == message.author
- await message.channel.purge(check=check)
- await message.channel.set_permissions(message.author,overwrite=None)
- await client.get_channel(safaridicts.commands[callword][1]).set_permissions(message.author,read_messages=True)
- elif check(['kick']) and staff():
- for x in message.guild.members:
- if x.name.lower().startswith(args.lower()):
- await message.channel.send('Please confirm by using &confirmkick. If you wish to not kick, use &declinekick')
- def check(m):
- return m.content in ['&declinekick','&confirmkick'] and m.author == message.author and m.channel == message.channel
- confdecmsg = await client.wait_for('message',check=check,timeout=600.0)
- if confdecmsg.content == '&confirmkick':
- await x.kick()
- await message.channel.send('{0.name} was kicked'.format(x))
- break
- else:
- await message.channel.send('Nobody kicked')
- break
- elif check(['ban']) and staff():
- for x in message.guild.members:
- if x.name.lower().startswith(args.lower()):
- await message.channel.send('Please confirm by using &confirmban. If you wish to not kick, use &declinenban')
- def check(m):
- return m.content in ['&declineban','&confirmban'] and m.author == message.author and m.channel == message.channel
- confdecmsg = await client.wait_for('message',check=check,timeout=600.0)
- if confdecmsg.content == '&confirmban':
- await x.ban()
- await message.channel.send('{0.name} was banned'.format(x))
- break
- else:
- await message.channel.send('Nobody Banned')
- break
- elif check(['addperms']) and staff() and len(args.split(',')) > 1:
- arglist = args.split(',')
- name = arglist[0].strip()
- target = 0
- for x in message.guild.roles:
- if x.name.lower().startswith(name.lower()):
- target = x
- break
- if target == 0:
- for x in message.guild.members:
- if x.name.lower().startswith(name.lower()):
- target = x
- break
- if target == 0:
- await message.channel.send('Could not find {}'.format(name))
- try:
- overwrite = message.channel.overwrites_for(target)
- except:
- overwrite = discord.PermissionOverwrite()
- arglist.pop(0)
- for x in arglist:
- if x.strip().lower().split('=')[0] in ['read_messages','send_messages','manage_messages','add_reactions','embed_links','attach_files','read_message_history'] and x.strip().lower().split('=')[1] in ['true','false','none']:
- options = {'true':True,'false':False,'none':None}
- perm = x.strip().lower().split('=')[0].lower()
- value = options[x.lower().strip().split('=')[1].lower()]
- if perm == 'read_messages':
- overwrite.read_messages = value
- elif perm == 'send_messages':
- overwrite.send_messages = value
- elif perm == 'manage_messages':
- overwrite.manage_messages = alue
- elif perm == 'add_reactions':
- overwrite.add_reactions = value
- elif perm == 'read_message_history':
- overwrite.read_message_history = value
- elif perm == 'embed_links':
- overwrite.embed_links = value
- elif perm == 'attach_files':
- overwrite.attach_files = value
- await message.channel.set_permissions(target,overwrite=overwrite)
- await message.delete()
- elif check(['nes']) and staff():
- await message.channel.set_permissions(message.guild.default_role,read_messages=False)
- elif check(['randomstring']) and staff():
- charlist = []
- for x in '1234567890qwertyuiopasdfghjklzxcvbnm':
- charlist.append(x)
- strlist = []
- for x in range(0,6):
- strlist.append(random.choice(charlist))
- await message.channel.send(''.join(strlist))
- elif check(['addcc']):
- with open('saved.txt','a') as f:
- f.write('\ncc ' + args)
- elif check(['delcc']):
- with open('saved.txt','r') as f:
- lines = f.read().split('\n')
- for x in lines:
- if x.startswith('cc ' + args):
- lines.remove(x)
- break
- newsaved = '\n'.join(lines)
- with open('saved.txt','w') as f:
- f.write(newsaved)
- if message.content.lower() in arnames:
- await message.channel.send(artexts[arnames.index(message.content.lower())])
- @client.event
- async def on_message_edit(before,after):
- embed = discord.Embed(title='Edited Message',description='{0.mention} edited a message'.format(after.author))
- embed.add_field(name='Before',value=str(before.content),inline=False)
- embed.add_field(name='After',value=str(after.content),inline=False)
- await client.get_channel(573998237086777364).send(content=None,embed=embed)
- @client.event
- async def on_message_delete(message):
- embed = discord.Embed(title='Deleted Message',description=message.author.mention+' Deleted a message')
- embed.add_field(name='Content:',value=message.content,inline=False)
- await client.get_channel(573998237086777364).send(content=None,embed=embed)
- @client.event
- async def on_member_update(before,after):
- if before.nick != after.nick:
- embed = discord.Embed(title='Nickname Change',description=before.mention+' changed their nickname')
- embed.add_field(name='Before:',value=before.nick)
- embed.add_field(name='After:',value=after.nick)
- await client.get_channel(573998237086777364).send(content=None,embed=embed)
- elif before.roles != after.roles:
- check = 0
- for x in before.roles:
- if x not in after.roles:
- role = x
- check = 1
- break
- if check == 1:
- embed = discord.Embed(title='Removed Role',description=before.mention + ' had the `{}` role taken'.format(role.name))
- await client.get_channel(573998237086777364).send(content=None,embed=embed)
- else:
- for x in after.roles:
- if x not in before.roles:
- role = x
- check = 1
- break
- if check == 1:
- embed = discord.Embed(title='Added Role',description=before.mention + ' had the `{}` role given'.format(role.name))
- await client.get_channel(573998237086777364).send(content=None,embed=embed)
- @client.event
- async def on_member_join(member):
- await member.guild.system_channel.send(member.mention + ', welcome to the server!')
- msg = await client.get_channel(575659588767186964).send('{}, please say "agree" to verify yourself.'.format(member.mention))
- def check(m):
- return m.author == member and m.channel == client.get_channel(575659588767186964)
- message = await client.wait_for('message',check=check)
- await message.author.add_roles(client.get_role(573994619835121743))
- await msg.delete()
- await message.delete()
- @client.event
- async def on_member_remove(member):
- await member.guild.system_channel.send('**{}** has left the server :frowning:'.format(member))
- @client.event
- async def on_guild_channel_delete(channel):
- embed = discord.Embed(title='Channel Deleted',description=channel.name + ' was deleted')
- await client.get_channel(573998237086777364).send(content=None,embed=embed)
- @client.event
- async def on_guild_channel_create(channel):
- embed = discord.Embed(title='Channel Created',description=channel.mention + ' was created')
- await client.get_channel(573998237086777364).send(content=None,embed=embed)
- @client.event
- async def on_guild_channel_update(before,after):
- if before.name != after.name:
- embed = discord.Embed(title='Channel Name Changed',description=after.mention+' had the name changed')
- embed.add_field(name='Before',value=before.name,inline=False)
- embed.add_field(name='After',value=after.name,inline=False)
- await client.get_channel(573998237086777364).send(content=None,embed=embed)
- @client.event
- async def on_guild_role_create(role):
- embed = discord.Embed(title='Role Created',description=role.mention + ' was created')
- await client.get_channel(573998237086777364).send(content=None,embed=embed)
- @client.event
- async def on_guild_role_delete(role):
- embed = discord.Embed(title='Role Deleted',description=role.name + ' was deleted')
- await client.get_channel(573998237086777364).send(content=None,embed=embed)
- @client.event
- async def on_guild_role_update(before,after):
- if before.name != after.name:
- embed = discord.Embed(title='Role Name Changed',description=after.mention+' had the name changed')
- embed.add_field(name='Before',value=before.name,inline=False)
- embed.add_field(name='After',value=after.name,inline=False)
- await client.get_channel(573998237086777364).send(content=None,embed=embed)
- @client.event
- async def on_member_ban(guild,user):
- await guild.system_channel.send('**{}** was kicked out'.format(user))
- embed = discord.Embed(title='User Banned',description=user + ' was banned')
- embed.set_image(url=user.avatar_url)
- await client.get_channel(573998237086777364).send(content=None,embed=embed)
- client.run(token)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement