Adding maintainer to settings, complete suggest

This commit is contained in:
Akumatic 2018-06-20 23:39:16 +02:00
parent c0bc979330
commit bd048acc95
4 changed files with 85 additions and 15 deletions

View File

@ -13,17 +13,80 @@ A Discord Bot written in Python using the Rewrite API wrapper
Depending on your OS and environment you need to type `python3` or another equivalent instead of `python`
### Setting it up
1. Go [to your Discord's App Overview](https://discordapp.com/developers/applications/me) and create a new app.
### Initial setup
1. Go to [your Discord's App Overview](https://discordapp.com/developers/applications/me) and create a new app.
2. Scroll down and "Create a Bot User"
3. Reveal and copy Token of your new Bot
4. Open [settings.json](settings.json) and paste your Token into the quotes after `"token":`
5. Open Discord, enable Developer Mode (Settings > Appearance) and copy your own ID
6. Open [settings.json](settings.json) and paste your ID into the quotes after `"maintainer":`
6. Start the Bot (see below)
7. Go to [your Discord's App Overview](https://discordapp.com/developers/applications/me) again and open the Bot
8. Click on "Generate OAuth2 URL" and give the bot `Administrator` Bot Permissions
9. Open the generated URL and add the Bot to your Server
### Start the Bot
Just open a console and type ```python akuma.py```
Depending on your OS and environment you need to type `python3` or another equivalent instead of `python`
### Configuration
In your bot folder are two configuration files: `settings.json` and `server.json`.
##### settings.json
- `token`
The bot token your bot is using.
- `prefix`
The bot needs a prefix to distinguish messages adressed to him.
- `description`
A description of the bot, printed when calling `help`.
- `game`
Sets the "Playing" message of your bot, placed after a help command
- `extensions`
A list of all extensions the bot will automatically load after starting. You can add more members either manually or by passing `True` as second argument to `load <ext>`
- `maintainer`
ID of the user with privileges to maintain the bot. Only this user can load, unload and reload extensions.
##### server.json
*You can either edit this file manually or use the respective moderation commands.*
As soon as the bot joins a server, it will fill `server.json` automatically with an dictionary identified by the server ID with the following keys:
- `adminRole`
Everyone with the given role has the permissions to run admin commands of the bot
- `modRole`
Everyone with the given role has the permissions to run mod commands of the bot
- `joinMessage`
A Message every user gets when he joins your server.
- `suggestionChannel`
A designated channel for the bot's suggest function. See `help suggest` for more informations
- `modChannel`
A channel the bot is using for logging moderation commands.
## Add your own extensions
It is easy to create a new extension on your own. First you need to create a new python file in the "extensions" folder.

View File

@ -1,11 +1,10 @@
import json
import discord
import json, discord
from discord.ext import commands
#config files
cFile = "settings.json"
sFile = "server.json"
#config file
c = json.load(open(cFile, "r"))
s = json.load(open(sFile, "r"))
@ -49,7 +48,7 @@ async def load(ctx, ext : str = None, json : bool = False):
First argument is the name of python file without .py extension.
(Optional) If second argument is True, it will be autoloaded"""
if(ctx.author.id != ctx.guild.owner.id):
if(ctx.author.id != c["maintainer"]):
return
if(ext == None):
return await ctx.send("No extension specified")
@ -65,7 +64,7 @@ async def load(ctx, ext : str = None, json : bool = False):
@bot.command(hidden=True)
async def reload(ctx, ext : str = None):
"""Reloads an extension"""
if(ctx.author.id != ctx.guild.owner.id):
if(ctx.author.id != c["maintainer"]):
return
if(ext == None):
return await ctx.send("No extension specified")
@ -86,7 +85,7 @@ async def unload(ctx, ext : str = None, json : bool = False):
First argument is the name of the extension.
(Optional) If second argument is True, it will be removed from autoload"""
if(ctx.author.id != ctx.guild.owner.id):
if(ctx.author.id != c["maintainer"]):
return
if(ext == None):
return await ctx.send("No extension specified")

View File

@ -16,21 +16,28 @@ class User():
await ctx.send("""Invite Link: <https://discordapp.com/oauth2/authorize?client_id={}&scope=bot&permissions=8>
\nPlease read <https://github.com/Akumatic/Akuma-Matata/blob/master/README.md> for informations""".format(self.bot.user.id))
@commands.command()
async def suggest(self, ctx, *, msg : str):
async def suggest(self, ctx, *, msg : str = None):
"""Makes a suggestion to the moderation team.
Planned: If there's no suggestionChannel specified, send a pm to the owner."""
Only callable from a server
Your original message gets deleted and sent to a private suggestion channel.
If no suggestion channel is specified, it will be sent to the owner instead."""
if(ctx.guild == None):
return await ctx.send("This command can only be used within a server")
if(msg == None):
return await ctx.send("Your suggestion can't be empty")
await ctx.message.delete()
e = discord.Embed(color=0x6428c8)
e = discord.Embed(description="Server: " + ctx.guild.name, color=0x6428c8)
e.set_author(name=ctx.author, icon_url=ctx.author.avatar_url)
e.add_field(name="Suggestion", value=msg)
if(s[str(ctx.guild.id)]["suggestionChannel"] != 0):
chan = self.bot.get_channel(s[str(ctx.guild.id)]["suggestionChannel"])
await chan.send(embed=e)
else:
await ctx.send(e)
await ctx.guild.get_member(ctx.guild.owner.id).send(embed=e)
#Setup
def setup(bot):

View File

@ -7,5 +7,6 @@
"fun",
"moderation",
"user"
]
],
"maintainer": 0
}