Skip to content

Commit

Permalink
modularity update
Browse files Browse the repository at this point in the history
  • Loading branch information
ClementJ18 committed Jul 31, 2017
1 parent be07598 commit ce28b16
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 22 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ __User Pofile__ <br>
**Money** - users can claim dailies and check their money

__Planned Features__
* [ ] **Modularity Overhaul** - allow server owners to set their own auto moderation channels, welcome message and others server-specific settings.
* [x] **Modularity Overhaul** - allow server owners to set their own auto moderation channels, welcome message and others server-specific settings.
* [x] **Overhaul to expand user profile** - server-specific permission, more compact, improved code
* [ ] **Server Roles for Bot Roles** - Give server owners the ability to assign server roles to the bot roles and thereby the ability to grant a bot role by simply granting the equivalent server roles
* [ ] **EXP System** - longer exp cooldown, level up system, random amount of exp
Expand Down
79 changes: 62 additions & 17 deletions bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ async def get_pre(bot, message):
blacklistList = list(next(reader))
line = next(reader)
for row in reader:
serverData[row[1]] = {"mute":row[2],"automod":row[3],"welcome":row[4], "selfRoles":row[5].split(","),"ignoreCommand":row[6].split(","),"ignoreAutomod":row[7].split(",")}
serverData[row[1]] = {"mute":row[2],"automod":row[3],"welcome-channel":row[4], "selfRoles":row[5].split(","),"ignoreCommand":row[6].split(","),"ignoreAutomod":row[7].split(","),"welcome":row[8],"goodbye":row[9]}

# *****************************************************************************************************************
# Internal Function
Expand Down Expand Up @@ -168,12 +168,12 @@ async def hourly_save():
with open("data/setting.csv","w",newline="") as csvfile:
Awriter = csv.writer(csvfile)
Awriter.writerow(blacklistList)
Awriter.writerow(['Server Name','Server','Mute Role','Autmod Channel','Welcome Channel',"Self Roles","Automod Ignore","Commands Ignore"])
Awriter.writerow(['Server Name','Server','Mute Role','Automod Channel','Welcome Channel',"Self Roles","Automod Ignore","Commands Ignore"])
for x in serverData:
selfRolesList = ",".join(serverData[x]["selfRoles"])
automodList = ",".join(serverData[x]["ignoreAutomod"])
commandList = ",".join(serverData[x]["ignoreCommand"])
Awriter.writerow([bot.get_server(x).name,x,serverData[x]["mute"],serverData[x]["automod"],serverData[x]["welcome"],selfRolesList,commandList,automodList])
Awriter.writerow([bot.get_server(x).name,x,serverData[x]["mute"],serverData[x]["automod"],serverData[x]["welcome-channel"],selfRolesList,commandList,automodList,serverData[x]["welcome"],serverData[x]["goodbye"]])

print("Saved at " + str(t.asctime(t.localtime(t.time()))))
await asyncio.sleep(3600) # task runs every hour
Expand Down Expand Up @@ -223,12 +223,12 @@ async def kill(cont):
with open("data/setting.csv","w",newline="") as csvfile:
Awriter = csv.writer(csvfile)
Awriter.writerow(blacklistList)
Awriter.writerow(['Server Name','Server','Mute Role','Autmod Channel','Welcome Channel',"Self Roles","Automod Ignore","Commands Ignore"])
Awriter.writerow(['Server Name','Server','Mute Role','Automod Channel','Welcome Channel',"Self Roles","Automod Ignore","Commands Ignore","Welcome Message","Goodbye Message"])
for x in serverData:
selfRolesList = ",".join(serverData[x]["selfRoles"])
automodList = ",".join(serverData[x]["ignoreAutomod"])
commandList = ",".join(serverData[x]["ignoreCommand"])
Awriter.writerow([bot.get_server(x).name,x,serverData[x]["mute"],serverData[x]["automod"],serverData[x]["welcome"],selfRolesList,commandList,automodList])
Awriter.writerow([bot.get_server(x).name,x,serverData[x]["mute"],serverData[x]["automod"],serverData[x]["welcome-channel"],selfRolesList,commandList,automodList,serverData[x]["welcome"],serverData[x]["goodbye"]])

await bot.send_message(bot.get_channel("318465643420712962"), "**Bot Offline**")
await bot.logout()
Expand Down Expand Up @@ -486,7 +486,7 @@ async def nick(cont, arg0 : discord.Member,*, arg1):
@has_perms(4)
async def giveme_roles(cont):
if cont.invoked_subcommand is None:
await bot.say("Please pass a valid subcommand")
await bot.say("Please pass a valid subcommand (add or del)")

@giveme_roles.command(pass_context=True, name="add")
async def giveme_roles_add(cont, *, arg0):
Expand Down Expand Up @@ -550,6 +550,42 @@ async def debug(cont, *, arg0 : str):

await bot.say(python.format(result))

@bot.group(pass_context = True)
@has_perms(4)
async def settings(cont):
if cont.invoked_subcommand is None:
await bot.say("Please pass in a valid subcommand. (welcome, welcome-channel, goodbye, mute, automod)")

@settings.command(pass_context = True, name="mute")
async def settings_mute(cont, *, arg0):
if not discord.utils.get(cont.message.server.roles, name=arg0) is None:
await bot.say("Okay, the mute role for your server will be " + arg0)
serverData[cont.message.server.id]["mute"] = arg0
else:
await bot.say("No such role")

@settings.command(pass_context = True, name="welcome-channel")
async def settings_welcome_channel(cont, arg0 : discord.Channel):
await bot.say("Okay, users will get their welcome message in " + arg0.name + " from now on.")
serverData[cont.message.server.id]["welcome-channel"] = arg0.id

@settings.command(pass_context = True, name="automod-channel")
async def settings_automod_channel(cont, arg0 : discord.Channel):
await bot.say("Okay, all automoderation messages will be posted in " + arg0.name + " from now on.")
serverData[cont.message.server.id]["automod"] = arg0.id

@settings.command(pass_context = True, name="welcome")
async def settings_welcome(cont, *, arg0):
arg0 = arg0.replace("\\","")
await bot.say("Your server's welcome message will be: \n" + arg0)
serverData[cont.message.server.id]["welcome"] = arg0

@settings.command(pass_context = True, name="goodbye")
async def settings_goodbye(cont, *, arg0):
arg0 = arg0.replace("\\","")
await bot.say("Your server's goodbye message will be: \n" + arg0)
serverData[cont.message.server.id]["goodbye"] = arg0

# *****************************************************************************************************************
# Regular Commands
# *****************************************************************************************************************
Expand Down Expand Up @@ -659,7 +695,7 @@ async def on_server_join(server):
await default_stats(x, server)

await bot.send_message(server.default_channel, "Stats sets for users")
serverData[server.id] = {"mute":"","automod":"","welcome":"", "selfRoles":[],"ignoreCommand":[],"ignoreAutomod":[]}
serverData[server.id] = {"mute":"","automod":"","welcome-channel":"", "selfRoles":[],"ignoreCommand":[],"ignoreAutomod":[],"welcome":"","goodbye":""}
invite = await bot.create_invite(server)
await bot.send_message(bot.get_channel("241942232867799040"),"I was just invited in the server: " + server.name + ". Join me: " + invite.url)

Expand Down Expand Up @@ -693,26 +729,35 @@ async def on_member_join(member):
if member.id in blacklistList:
await bot.ban(member, delete_message_days=0)

try:
channel = bot.get_channel(serverData[member.server.id]["welcome"])
except AttributeError:
server = member.server
if serverData[member.server.id]["welcome-channel"] != "":
channel = bot.get_channel(serverData[member.server.id]["welcome-channel"])
else:
channel = member.server.default_channel

server = member.server
await bot.send_message(channel, 'Welcome {0.mention} to {1.name}!'.format(member, server))
await bot.change_nickname(member, str(member.name))
if serverData[member.server.id]["welcome"] != "":
message = serverData[member.server.id]["welcome"]
else:
message = 'Welcome {member} to {server}!'

server = member.server
await bot.send_message(channel, message.format(member=member.mention, server=server.name))
await default_stats(member, server)

#says goodbye and resets perms level if less than NecroBot Admin
@bot.event
async def on_member_remove(member):
try:
channel = bot.get_channel(serverData[member.server.id]["welcome"])
except AttributeError:
if serverData[member.server.id]["welcome-channel"] != "":
channel = bot.get_channel(serverData[member.server.id]["welcome-channel"])
else:
channel = member.server.default_channel

await bot.send_message(channel,"Leaving us so soon, {0.mention}? We'll miss you...".format(member))
if serverData[member.server.id]["goodbye"] != "":
message = serverData[member.server.id]["goodbye"]
else:
message = 'Leaving so soon? We\'ll miss you, {member}!'

await bot.send_message(channel, message.format(member=member.mention))
if userData[member.id]["perms"][member.server.id] < 6:
userData[member.id]["perms"][member.server.id] = 0

Expand Down
31 changes: 30 additions & 1 deletion data/logfile.txt
Original file line number Diff line number Diff line change
Expand Up @@ -565,4 +565,33 @@ Mon Jul 31 10:14:04 2017: Necro#6714 used n!off
Mon Jul 31 10:14:13 2017: Necro#6714 used n!debug print("hello world")
Mon Jul 31 10:14:37 2017: Necro#6714 used n!debug bot.send_message(cont.message.channel, "hello world")
Mon Jul 31 10:15:12 2017: Necro#6714 used n!debug bot.send_message(channel, "hello world")
Mon Jul 31 10:15:39 2017: Necro#6714 used n!off
Mon Jul 31 10:15:39 2017: Necro#6714 used n!off
Mon Jul 31 22:41:02 2017: Necro#6714 used n!settings
Mon Jul 31 22:41:53 2017: Necro#6714 used n!settings mute Good
Mon Jul 31 22:41:59 2017: Necro#6714 used n!mute <@317619283377258497>
Mon Jul 31 22:42:28 2017: Necro#6714 used n!mute TimeOut
Mon Jul 31 22:42:37 2017: Necro#6714 used n!settings mute TimeOut
Mon Jul 31 22:42:45 2017: Necro#6714 used n!settings mute bob
Mon Jul 31 22:43:44 2017: Necro#6714 used n!settings welcome-channel <#312243840046202881>
Mon Jul 31 22:43:52 2017: Necro#6714 used n!invite
Mon Jul 31 22:49:21 2017: Necro#6714 used n!settings welcome-channel <#312243840046202881>
Mon Jul 31 22:49:26 2017: Necro#6714 used n!off
Mon Jul 31 22:55:04 2017: Necro#6714 used n!settings welcome-channel <#312243840046202881>
Mon Jul 31 22:55:26 2017: Necro#6714 used n!off
Mon Jul 31 23:04:14 2017: Necro#6714 used n!debug bot.send_message(serverData[server.id]["welcome-channel"], "hello")
Mon Jul 31 23:04:42 2017: Necro#6714 used n!debug bot.send_message(bot.get_channel(serverData[server.id]["welcome-channel"]), "hello")
Mon Jul 31 23:05:08 2017: Necro#6714 used n!settings welcome-channel <#318738044515647498>
Mon Jul 31 23:05:58 2017: Necro#6714 used n!settings welcome Hello, {member} and welcome to {server}, don't forget to check out <#311630847969198082>
Mon Jul 31 23:07:19 2017: Necro#6714 used n!debug bot.send_message(bot.get_channel(serverData[server.id]["welcome-channel"]), serverData[server.id]["welcome"].format(author.mention, server.name))
Mon Jul 31 23:11:32 2017: Necro#6714 used n!debug bot.send_message(bot.get_channel(serverData[server.id]["welcome-channel"]), serverData[server.id]["welcome"].format(member=author.mention, server.name))
Mon Jul 31 23:13:39 2017: Necro#6714 used n!debug bot.send_message(bot.get_channel(serverData[server.id]["welcome-channel"]), serverData[server.id]["welcome"].format(member=author.mention, server=server.name))
Mon Jul 31 23:16:00 2017: Necro#6714 used n!settings goodbye Bye, we'll miss you {member} \:kissing_heart\:
Mon Jul 31 23:16:24 2017: Necro#6714 used n!debug bot.send_message(bot.get_channel(serverData[server.id]["welcome-channel"]), serverData[server.id]["goodbye"].format(member=author.mention))
Mon Jul 31 23:17:27 2017: Necro#6714 used n!off
Mon Jul 31 23:17:51 2017: Necro#6714 used n!settings goodbye Bye, we'll miss you {member} \:kissing_heart\:
Mon Jul 31 23:17:58 2017: Necro#6714 used n!debug bot.send_message(bot.get_channel(serverData[server.id]["welcome-channel"]), serverData[server.id]["goodbye"].format(member=author.mention))
Mon Jul 31 23:18:27 2017: Necro#6714 used n!ignore del <@!241942232867799040>
Mon Jul 31 23:18:34 2017: Necro#6714 used n!automod del <@!241942232867799040>
Mon Jul 31 23:19:21 2017: Necro#6714 used n!settings automod-channel <#318465643420712962>
Mon Jul 31 23:19:52 2017: Necro#6714 used n!settings automod-channel <#318828760331845634>
Mon Jul 31 23:19:56 2017: Necro#6714 used n!off
4 changes: 2 additions & 2 deletions data/setting.csv
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
158563957555068928
Server Name,Server,Mute Role,Autmod Channel,Welcome Channel,Self Roles,Automod Ignore,Commands Ignore
The Land of Shadow,311630847969198082,TimeOut,318828760331845634,318738044515647498,",Evil,Chaotic,Neutral,Lawful,Good",",311789251190587392,312647665395433492,312184736166576129,172002275412279296",",317619283377258497,241942232867799040,321305756999745547,312902474753245184,312243558671450113"
Server Name,Server,Mute Role,Automod Channel,Welcome Channel,Self Roles,Automod Ignore,Commands Ignore,Welcome Message,Goodbye Message
The Land of Shadow,311630847969198082,TimeOut,318828760331845634,318738044515647498,",Evil,Chaotic,Neutral,Lawful,Good",",311789251190587392,312647665395433492,312184736166576129,172002275412279296",",317619283377258497,321305756999745547,312902474753245184,312243558671450113","Hello, {member} and welcome to {server}, don't forget to check out <#311630847969198082>","Bye, we'll miss you {member} :kissing_heart:"
2 changes: 1 addition & 1 deletion data/userdata.csv
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
241942232867799040,65897,22,The Bot Smith,2190,"{'311630847969198082': 7, '236997924427530241': 7, '288255618341666827': 7}","test warning1, testwarning2,muted #1"
241942232867799040,65897,22,The Bot Smith,2311,"{'311630847969198082': 7, '236997924427530241': 7, '288255618341666827': 7}","test warning1, testwarning2,muted #1"
317619283377258497,698562,32, ,4667,"{'311630847969198082': 2, '236997924427530241': 0, '288255618341666827': 0}",test warning 1 by Necro#6714 on server The Land of Shadow
227589245731209217,2000,32, ,0,"{'311630847969198082': 0, '236997924427530241': 0, '288255618341666827': 0}",
220502526393450497,2000,32, ,4,"{'311630847969198082': 0, '236997924427530241': 0, '288255618341666827': 0}",
Expand Down

0 comments on commit ce28b16

Please sign in to comment.