1
0
Fork 0
mirror of synced 2024-06-22 16:20:23 +12:00

Fixed issue where required skips was not being set when first starting a queue

This commit is contained in:
Phxntxm 2017-02-06 17:11:23 -06:00
parent 09c9e34dbb
commit 2486f62640
3 changed files with 33 additions and 31 deletions

View file

@ -186,8 +186,6 @@ class Music:
if state.voice is None:
return
voice_channel = state.voice.channel
if voice_channel != before.voice.voice_channel and voice_channel != after.voice.voice_channel:
return
num_members = len(voice_channel.voice_members)
state.required_skips = math.ceil((num_members + 1) / 3)
@ -296,6 +294,10 @@ class Music:
await self.bot.say("You are not currently in the channel; please join before trying to request a song.")
return
# Set the number of required skips to start
num_members = len(my_channel.voice_members)
state.required_skips = math.ceil((num_members + 1) / 3)
# Create the player, and check if this was successful
# Here all we want is to get the information of the player
song = re.sub('[<>\[\]]', '', song)

View file

@ -7,8 +7,8 @@ import traceback
import logging
from discord.ext import commands
from .utils import config
from .utils import checks
from . import utils
log = logging.getLogger()
base_url = 'https://ptvappapi.picarto.tv'
@ -24,7 +24,7 @@ async def online_users():
# In place of requesting for /channel and checking if that is online currently, for each channel
# This method is in place to just return all online_users
url = '{}/online/all?key={}'.format(base_url, key)
with aiohttp.ClientSession(headers={"User-Agent": config.user_agent}) as s:
with aiohttp.ClientSession(headers={"User-Agent": utils.user_agent}) as s:
async with s.get(url) as response:
return await response.json()
except:
@ -43,7 +43,7 @@ def check_online(online_channels, channel):
class Picarto:
def __init__(self, bot):
self.bot = bot
self.headers = {"User-Agent": config.user_agent}
self.headers = {"User-Agent": utils.user_agent}
self.session = aiohttp.ClientSession()
async def check_channels(self):
@ -52,7 +52,7 @@ class Picarto:
try:
while not self.bot.is_closed:
r_filter = {'notifications_on': 1}
picarto = await config.get_content('picarto', r_filter)
picarto = await utils.get_content('picarto', r_filter)
# Get all online users before looping, so that only one request is needed
online_users_list = await online_users()
old_online_users = {data['member_id']: data for data in picarto if data['live']}
@ -69,7 +69,7 @@ class Picarto:
server = self.bot.get_server(server_id)
if server is None:
continue
server_alerts = await config.get_content('server_alerts', {'server_id': server_id})
server_alerts = await utils.get_content('server_alerts', {'server_id': server_id})
try:
channel_id = server_alerts[0]['channel_id']
except (IndexError, TypeError):
@ -82,7 +82,7 @@ class Picarto:
fmt = "{} has just gone live! View their stream at {}".format(member.display_name, url)
await self.bot.send_message(channel, fmt)
await config.update_content('picarto', {'live': 1}, {'member_id': m_id})
await utils.update_content('picarto', {'live': 1}, {'member_id': m_id})
for m_id, result in old_online_users.items():
# Get their url and their user based on that url
url = result['picarto_url']
@ -94,7 +94,7 @@ class Picarto:
server = self.bot.get_server(server_id)
if server is None:
continue
server_alerts = await config.get_content('server_alerts', {'server_id': server_id})
server_alerts = await utils.get_content('server_alerts', {'server_id': server_id})
try:
channel_id = server_alerts[0]['channel_id']
except IndexError:
@ -105,7 +105,7 @@ class Picarto:
fmt = "{} has just gone offline! Catch them next time they stream at {}".format(
member.display_name, url)
await self.bot.send_message(channel, fmt)
await config.update_content('picarto', {'live': 0}, {'member_id': m_id})
await utils.update_content('picarto', {'live': 0}, {'member_id': m_id})
await asyncio.sleep(30)
except Exception as e:
tb = traceback.format_exc()
@ -113,7 +113,7 @@ class Picarto:
log.error(fmt)
@commands.group(pass_context=True, invoke_without_command=True, no_pm=True)
@checks.custom_perms(send_messages=True)
@utils.custom_perms(send_messages=True)
async def picarto(self, ctx, member: discord.Member = None):
"""This command can be used to view Picarto stats about a certain member
@ -122,7 +122,7 @@ class Picarto:
# If member is not given, base information on the author
member = member or ctx.message.author
r_filter = {'member_id': member.id}
picarto_entry = await config.get_content('picarto', r_filter)
picarto_entry = await utils.get_content('picarto', r_filter)
if picarto_entry is None:
await self.bot.say("That user does not have a picarto url setup!")
return
@ -151,7 +151,7 @@ class Picarto:
await self.bot.say("Picarto stats for {}: ```\n{}```".format(member.display_name, fmt))
@picarto.command(name='add', pass_context=True, no_pm=True)
@checks.custom_perms(send_messages=True)
@utils.custom_perms(send_messages=True)
async def add_picarto_url(self, ctx, url: str):
"""Saves your user's picarto URL
@ -187,20 +187,20 @@ class Picarto:
'notifications_on': 1,
'live': 0,
'member_id': ctx.message.author.id}
if await config.add_content('picarto', entry, r_filter):
if await utils.add_content('picarto', entry, r_filter):
await self.bot.say(
"I have just saved your Picarto URL {}, this server will now be notified when you go live".format(
ctx.message.author.mention))
else:
await config.update_content('picarto', {'picarto_url': url}, r_filter)
await utils.update_content('picarto', {'picarto_url': url}, r_filter)
await self.bot.say("I have just updated your Picarto URL")
@picarto.command(name='remove', aliases=['delete'], pass_context=True, no_pm=True)
@checks.custom_perms(send_messages=True)
@utils.custom_perms(send_messages=True)
async def remove_picarto_url(self, ctx):
"""Removes your picarto URL"""
r_filter = {'member_id': ctx.message.author.id}
if await config.remove_content('picarto', r_filter):
if await utils.remove_content('picarto', r_filter):
await self.bot.say("I am no longer saving your picarto URL {}".format(ctx.message.author.mention))
else:
await self.bot.say(
@ -208,7 +208,7 @@ class Picarto:
ctx.message.author.mention, ctx.prefix))
@picarto.group(pass_context=True, no_pm=True, invoke_without_command=True)
@checks.custom_perms(send_messages=True)
@utils.custom_perms(send_messages=True)
async def notify(self, ctx):
"""This can be used to turn picarto notifications on or off
Call this command by itself, to add this server to the list of servers to be notified
@ -216,7 +216,7 @@ class Picarto:
EXAMPLE: !picarto notify
RESULT: This server will now be notified of you going live"""
r_filter = {'member_id': ctx.message.author.id}
result = await config.get_content('picarto', r_filter)
result = await utils.get_content('picarto', r_filter)
# Check if this user is saved at all
if result is None:
await self.bot.say(
@ -226,30 +226,30 @@ class Picarto:
elif ctx.message.server.id in result[0]['servers']:
await self.bot.say("I am already set to notify in this server...")
else:
await config.update_content('picarto', {'servers': r.row['servers'].append(ctx.message.server.id)},
await utils.update_content('picarto', {'servers': r.row['servers'].append(ctx.message.server.id)},
r_filter)
@notify.command(name='on', aliases=['start,yes'], pass_context=True, no_pm=True)
@checks.custom_perms(send_messages=True)
@utils.custom_perms(send_messages=True)
async def notify_on(self, ctx):
"""Turns picarto notifications on
EXAMPLE: !picarto notify on
RESULT: Notifications are sent when you go live"""
r_filter = {'member_id': ctx.message.author.id}
await config.update_content('picarto', {'notifications_on': 1}, r_filter)
await utils.update_content('picarto', {'notifications_on': 1}, r_filter)
await self.bot.say("I will notify if you go live {}, you'll get a bajillion followers I promise c:".format(
ctx.message.author.mention))
@notify.command(name='off', aliases=['stop,no'], pass_context=True, no_pm=True)
@checks.custom_perms(send_messages=True)
@utils.custom_perms(send_messages=True)
async def notify_off(self, ctx):
"""Turns picarto notifications off
EXAMPLE: !picarto notify off
RESULT: No more notifications sent when you go live"""
r_filter = {'member_id': ctx.message.author.id}
await config.update_content('picarto', {'notifications_on': 0}, r_filter)
await utils.update_content('picarto', {'notifications_on': 0}, r_filter)
await self.bot.say(
"I will not notify if you go live anymore {}, "
"are you going to stream some lewd stuff you don't want people to see?~".format(

View file

@ -46,8 +46,8 @@ class Twitch:
# Loop through as long as the bot is connected
try:
while not self.bot.is_closed:
twitch = await config.get_content('twitch', {'notifications_on': 1})
# Online/offline is based on whether they are set to such, in the config file
twitch = await utils.get_content('twitch', {'notifications_on': 1})
# Online/offline is based on whether they are set to such, in the utils file
# This means they were detected as online/offline before and we check for a change
online_users = {data['member_id']: data for data in twitch if data['live']}
offline_users = {data['member_id']: data for data in twitch if not data['live']}
@ -62,7 +62,7 @@ class Twitch:
server = self.bot.get_server(server_id)
if server is None:
continue
server_alerts = await config.get_content('server_alerts', {'server_id': server_id})
server_alerts = await utils.get_content('server_alerts', {'server_id': server_id})
try:
channel_id = server_alerts[0]['channel_id']
except (IndexError, TypeError):
@ -75,7 +75,7 @@ class Twitch:
fmt = "{} has just gone live! View their stream at {}".format(member.display_name, url)
await self.bot.send_message(channel, fmt)
await config.update_content('twitch', {'live': 1}, {'member_id': m_id})
await utils.update_content('twitch', {'live': 1}, {'member_id': m_id})
for m_id, result in online_users.items():
# Get their url and their user based on that url
url = result['twitch_url']
@ -87,7 +87,7 @@ class Twitch:
server = self.bot.get_server(server_id)
if server is None:
continue
server_alerts = await config.get_content('server_alerts', {'server_id': server_id})
server_alerts = await utils.get_content('server_alerts', {'server_id': server_id})
channel_id = server_id
if len(server_alerts) > 0:
channel_id = server_alerts[0].get('channel_id')
@ -97,7 +97,7 @@ class Twitch:
fmt = "{} has just gone offline! Catch them next time they stream at {}".format(
member.display_name, url)
await self.bot.send_message(channel, fmt)
await config.update_content('twitch', {'live': 0}, {'member_id': m_id})
await utils.update_content('twitch', {'live': 0}, {'member_id': m_id})
await asyncio.sleep(30)
except Exception as e:
tb = traceback.format_exc()