New home for away, seen, and hunting

This commit is contained in:
aikaterna
2017-11-15 20:42:31 -08:00
parent 11465d7a9c
commit 8abe72a0fc
7 changed files with 478 additions and 0 deletions

88
away/away.py Normal file
View File

@@ -0,0 +1,88 @@
import os
import discord
from .utils import checks
from discord.ext import commands
from cogs.utils.dataIO import dataIO
class Away:
"""Le away cog"""
def __init__(self, bot):
self.bot = bot
self.data = dataIO.load_json('data/away/away.json')
async def listener(self, message):
tmp = {}
server = message.server
if server.id not in self.data:
for mention in message.mentions:
tmp[mention] = True
if message.author.id != self.bot.user.id:
for author in tmp:
if author.id in self.data:
try:
avatar = author.avatar_url if author.avatar else author.default_avatar_url
if self.data[author.id]['MESSAGE']:
em = discord.Embed(description=self.data[author.id]['MESSAGE'], color=discord.Color.blue())
em.set_author(name='{} is currently away'.format(author.display_name), icon_url=avatar)
else:
em = discord.Embed(color=discord.Color.blue())
em.set_author(name='{} is currently away'.format(author.display_name), icon_url=avatar)
await self.bot.send_message(message.channel, embed=em)
except:
if self.data[author.id]['MESSAGE']:
msg = '{} is currently away and has set the following message: `{}`'.format(author.display_name, self.data[author.id]['MESSAGE'])
else:
msg = '{} is currently away'.format(author.display_name)
await self.bot.send_message(message.channel, msg)
@commands.command(pass_context=True, name="away")
async def _away(self, context, *message: str):
"""Tell the bot you're away or back."""
author = context.message.author
if author.id in self.data:
del self.data[author.id]
msg = 'You\'re now back.'
else:
self.data[context.message.author.id] = {}
if len(str(message)) < 256:
self.data[context.message.author.id]['MESSAGE'] = ' '.join(context.message.clean_content.split()[1:])
else:
self.data[context.message.author.id]['MESSAGE'] = True
msg = 'You\'re now set as away.'
dataIO.save_json('data/away/away.json', self.data)
await self.bot.say(msg)
@commands.command(pass_context=True, name="toggleaway")
@checks.mod_or_permissions(administrator=True)
async def _ignore(self, context):
server = context.message.server
if server.id in self.data:
del self.data[server.id]
message = 'Not ignoring this server anymore.'
else:
self.data[server.id] = True
message = 'Ignoring this server.'
dataIO.save_json('data/away/away.json', self.data)
await self.bot.say(message)
def check_folder():
if not os.path.exists('data/away'):
print('Creating data/away folder...')
os.makedirs('data/away')
def check_file():
f = 'data/away/away.json'
if not dataIO.is_valid_json(f):
dataIO.save_json(f, {})
print('Creating default away.json...')
def setup(bot):
check_folder()
check_file()
n = Away(bot)
bot.add_listener(n.listener, 'on_message')
bot.add_cog(n)

7
away/info.json Normal file
View File

@@ -0,0 +1,7 @@
{
"AUTHOR" : "Paddolicious#8880",
"NAME" : "Away",
"SHORT" : "Sets and unsets a user away.",
"DESCRIPTION" : "Sets the user as away. When someone mentions the users the bot replies with either its own message or a message set by the user that the user is away.",
"TAGS": ["away", "member", "tool"]
}