|
- import discord
- from discord.ext.commands import group
-
- import checks
- from config.server_config import ServerConfig
-
- def blacklisted(user):
- with open("config/blacklist.txt", "r") as fp:
- for line in fp.readlines():
- if user.id+"\n" == line:
- return True
- return False
-
- class Twitch():
- """
- A cog that handles posting when users go live on Twitch
- """
- def __init__(self, Bot):
- self.bot = Bot
- self.con = ServerConfig()
- self.servers = self.con.servers
-
- async def on_member_update(self, member_b, member_a):
- # Twitch Shilling Part
- if blacklisted(member_b):
- return
- # Check to see if member_before game exists. Avoids crashes at line 24
- if member_b.game:
- typeb = member_b.game.type
- else:
- typeb = False
- if member_a.game:
- if member_a.game.type and not typeb: # Hopefully this fucking fixes it
- ts_enabled = self.servers[member_a.server.id]["twitch"]["enabled"]
- ts_whitelist = self.servers[member_a.server.id]["twitch"]["whitelist"]["enabled"]
- if ts_enabled:
- if not ts_whitelist or member_a.id in \
- self.servers[member_a.server.id]["twitch"]["whitelist"]["list"]:
- channel = discord.Object(self.servers[member_a.server.id]["twitch"]["twitch-channel"])
- return await self.bot.send_message(channel,
- content=":video_game:** {} is live!** :video_game:\n{}\n{}".format(
- member_a.name, member_a.game.name, member_a.game.url))
- @group(pass_context=True, hidden=True)
- @checks.is_bot_owner()
- async def twitch(self, ctx):
- if ctx.invoked_subcommand is None:
- return await self.bot.say('Missing Argument')
-
- @twitch.command(pass_context=True, hidden=True)
- async def enablewhitelist(self, ctx):
- self.servers = self.con.load_config()
- if not self.servers[ctx.server.id]["twitch"]["whitelist"]["enabled"]:
- self.servers[ctx.server.id]["twitch"]["whitelist"]["enabled"] = 1
- self.con.update_config(self.servers)
- return await self.bot.reply("Whitelist for Twitch shilling has been enabled.")
- else:
- self.servers[ctx.server.id]["twitch"]["whitelist"]["enabled"] = 0
- self.con.update_config(self.servers)
- return await self.bot.reply("Whitelist for Twitch shilling has been disabled.")
-
- @twitch.command(pass_context=True, hidden=True)
- async def whitelistadd(self, ctx, option, *mentions):
- whitelist_count = 0
-
- if not ctx.message.mentions and option != 'list':
- return await self.bot.reply("You haven't mentioned anyone to whitelist.")
-
- if option not in ['+', '-', 'add', 'remove', 'list']:
- return await self.bot.say('Invalid option "%s" specified, use +, -, add, or remove' % option, expire_in=20)
-
- if option in ['+', 'add']:
- self.servers = self.con.load_config()
- for user in ctx.message.mentions:
- self.servers[ctx.message.server.id]["twitch"]["whitelist"]["list"].append(user.id)
- self.con.update_config(self.servers)
- whitelist_count += 1
- return await self.bot.say('{} user(s) have been added to the whitelist'.format(whitelist_count))
-
- elif option in ['-', 'remove']:
- self.servers = self.con.load_config()
- for user in ctx.message.mentions:
- if user.id in self.servers[ctx.message.server.id]["twitch"]["whitelist"]["list"]:
- self.servers[ctx.message.server.id]["twitch"]["whitelist"]["list"].remove(user.id)
- self.con.update_config(self.servers)
- whitelist_count += 1
- return await self.bot.say('{} user(s) have been removed to the whitelist'.format(whitelist_count))
-
- elif option == 'list':
- return await self.bot.say(
- self.servers[ctx.message.server.id]["twitch"]["whitelist"]["list"])
-
-
- def setup(Bot):
- Bot.add_cog(Twitch(Bot))
|