class EventColors(Enum): ban = Colour.dark_red() unban = Colour.teal() kick = Colour.red() join = Colour.dark_green() leave = Colour.blue() delete = Colour.magenta() bulk_delete = Colour.dark_magenta() edit = Colour.gold() name_change = Colour.purple() nickname_change = Colour.blurple() role_added = Colour.dark_teal() role_removed = Colour.orange() verified = Colour.light_grey()
async def queue(self, ctx: Context): session = self.get_session(ctx.guild) em = Embed(colour=Colour.dark_green(), title="Upcoming requests") for index, track in enumerate(session.queue.requests[:10], 1): em.add_field(name=f"{index} - Requested by {track.requester}", value=track.information) if not em.fields: em.description = "There are currently no requests" await ctx.send(embed=em)
def playing_message(self) -> Dict[str, Union[Embed, File]]: self._cover.seek(0) em = Embed( colour=Colour.dark_green(), title=self._title, description=f'{self._album} - ({self._date})' ) em.set_author(name=self._artist) em.set_thumbnail(url='attachment://cover.jpg') return { 'embed': em, 'file': File(self._cover, 'cover.jpg') }
async def repeat(self, ctx: Context): """Repeats the currently playing track.""" session = self.get_session(ctx.guild) if ctx.author in session.repeat_requests: raise CommandError('You have already requested to repeat.') session.repeat_requests.append(ctx.author) repeats_needed = len(list(session.listeners)) // 2 + 1 if len(session.repeat_requests) >= repeats_needed: session.queue.add_request(session.current_track, at_start=True) else: em = Embed(colour=Colour.dark_green(), title='Repeat track', description=f'You currently need ' f'**{repeats_needed - len(session.repeat_requests)}** ' f'more votes to repeat this track.') await ctx.send(embed=em)
async def skip(self, ctx: Context): """Skips the currently playing track.""" session = self.get_session(ctx.guild) if ctx.author in session.skip_requests: raise CommandError("You have already requested to skip.") session.skip_requests.append(ctx.author) skips_needed = len(list(session.listeners)) // 2 + 1 if len(session.skip_requests) >= skips_needed: session.voice.stop() else: em = Embed(colour=Colour.dark_green(), title="Skip video", description=f"You currently need " f"**{skips_needed - len(session.skip_requests)}** " f"more votes to skip this track.") await ctx.send(embed=em)
async def on_guild_join(guild): global separator, data QMrole = discord.utils.find(lambda r: r.name == 'Queue Manager', guild.roles) if not QMrole: QMrole = await guild.create_role(name='Queue Manager', permissions=Permissions(285346816), colour=Colour.dark_green(), hoist=True) try: await guild.owner.add_roles(QMrole) except discord.errors.Forbidden: print('Bot does not have "Manage Role" Permissions') print('\n{} online in {} (id: {}):'.format(bot.user.name, guild.name, guild.id)) print('Loading data') try: data[guild.id] = loadFromJson(guild) except FileNotFoundError: print('No saved data found. Creating data file.') data[guild.id] = { 'serverID': guild.id, 'servername': guild.name, 'queue': [], 'config': { 'autofollow': True } } saveToJson(guild, data[guild.id]) for channel in guild.text_channels: #print(channel.name) if queueManagerPresent(guild): await channel.send( '{} is online for your queueing pleasure'.format( bot.user.display_name))
class MP3Track(Track): _embed_colour = Colour.dark_green() _track_type = 'MP3 file' _title = _artist = _album = _date = 'Unknown' def __init__( self, source, config: SubRedis, volume: float = 0.15, requester: User = None, **kwargs ): self.config = config self._cover = open(self.config.hget("config:resources", "default_mp3_art"), 'rb') super().__init__(source, config, volume, requester, **kwargs) tags = MP3(source) self.length = tags.info.length for attribute, tag in ( ('_title', 'TIT2'), ('_artist', 'TPE1'), ('_album', 'TALB'), ('_date', 'TDRC'), ('_cover', 'APIC:'), ('_cover', 'APIC') ): data = tags.get(tag) if data is not None: if attribute != '_cover': self.__setattr__(attribute, data[0]) else: self.__setattr__(attribute, BytesIO(data.data)) @property def information(self) -> str: return f'**{self._title}** by **{self._artist}**' @property def status_information(self) -> str: return f"{self._title} from {self._album}" @property def playing_message(self) -> Dict[str, Union[Embed, File]]: self._cover.seek(0) em = Embed( colour=Colour.dark_green(), title=self._title, description=f'{self._album} - ({self._date})' ) em.set_author(name=self._artist) em.set_thumbnail(url='attachment://cover.jpg') return { 'embed': em, 'file': File(self._cover, 'cover.jpg') }