Files
aikaterna-cogs/away/away.py
2017-11-15 20:42:31 -08:00

89 lines
3.5 KiB
Python

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)