def __init__(this, file=defFile): TimeManager.__init__(this) this.data = this.log = None this.file = os.path.join(__path__, file) this.logPath = os.path.join(__path__, 'log') this.logFile = os.path.join(this.logPath, f'{getToday()}.csv') this.start()
def __init__(this, table=table, timeCol=timeCol, flagCol=flagCol, db=mysqlDb): TimeManager.__init__(this) this.db = MysqlProxy(db=db) this.table = table this.timeCol = timeCol this.flagCol = flagCol
async def queue(self, ctx, page=1): await ctx.channel.purge(limit=1) voice = get(bot.voice_clients, guild=ctx.guild) playing, content, pg, iterator, queueSize = "", "", 0, 0, 5 page = page - 1 if voice and voice.is_playing: playing = f"[{self.songQueue[ctx.guild.id][0]['title']}]({self.songQueue[ctx.guild.id][0]['webpage_url']})" else: await ctx.send("Nothing playing", delete_after=10) if len(self.songQueue[ctx.guild.id]) > 1: for i in self.songQueue[ctx.guild.id][1:]: iterator += 1 pg = iterator // queueSize + 1 if page == iterator // queueSize: content += "\n".join( [f" **{self.songQueue[ctx.guild.id].index(i)}:** [{i['title']}]({i['webpage_url']})\n" f"**Requested by:** {ctx.author.mention} " f"**Duration:** {TimeManager.parseDuration(i['duration'])}\n"]) if pg > 1: content += "\n".join([f"**Page:** {page + 1}/{pg}"]) else: content = "No queued songs" embed = (discord.Embed(title="Music queue", color=self.embedColor) .add_field(name="Playing now: ", value=playing, inline=False) .add_field(name="Requested by", value=f"{ctx.author.mention}", inline=True) .add_field(name="Duration", value=TimeManager.parseDuration(self.songQueue[ctx.guild.id][0]['duration']), inline=True) .add_field(name="Queued: ", value=content, inline=False) .set_thumbnail(url=self.songQueue[ctx.guild.id][0]["thumbnail"])) await ctx.send(embed=embed)
class Mediator: time_manager = None updater = None pimp = None def __init__(self): self.pimp = Hooker() self.time_manager = TimeManager(self, enable_hooks=self.pimp.get_hooks()) self.updater = Updater(self) HwBrightnessControl.set_first_br(self.time_manager.get_current_br()) def notify(self, sender, event=None): if type(sender) is Updater: HwBrightnessControl.set_br(self.time_manager.get_current_br()) elif type(sender) is TimeManager: if event == 'h_m': self.pimp.do_morning() elif event == 'h_e': self.pimp.do_evening()
def work(self): ''' Вызываемый по таймеру метод ''' currentTime = TimeManager.getTime() deleteInterval = ConfigurationManager.sessionDeleteInterval() time = currentTime + deleteInterval Session.objects.filter(referenceTime__lt = time).delete() self.test = self.test + 1
def getUser(sessionId): ''' Метод для получения user по sessionId ''' user = None #userId = 0 - SessionManager.checkSessionWorker.test if SessionManager.checkSession(sessionId): reqSession = Session.objects.get(pk = sessionId) reqSession.referenceTime = TimeManager.getTime() reqSession.save() user = reqSession.userId return user
def createSession(user): ''' Метод для создания сессии для пользователя ''' sessionId = -1 try: newSession = Session(userId = user, referenceTime = TimeManager.getTime()) newSession.save() sessionId = newSession.pk except: sessionId = -1 return sessionId
async def edit_message(self, ctx): currentSong = self.songQueue[ctx.guild.id][0] embed = (discord.Embed(title="Currently playing", description=f"[{currentSong['title']}]({currentSong['webpage_url']})", color=self.embedColor) .add_field(name="Duration", value=TimeManager.parseDuration(currentSong["duration"])) .add_field(name="Requested by", value=ctx.author.mention) .add_field(name="Uploader", value=f"[{currentSong['uploader']}]({currentSong['channel_url']})") .add_field(name="Queue", value="No song queued") .set_thumbnail(url=currentSong["thumbnail"])) content = "\n".join([f"**{self.songQueue[ctx.guild.id].index(i)}:**" f"[{i['title']}]({i['webpage_url']})\n**Requested by:** {ctx.author.mention} " f"**Duration:** {TimeManager.parseDuration(i['duration'])}" for i in self.songQueue[ctx.guild.id][1:5]]) if len(self.songQueue[ctx.guild.id]) > 1 \ else "No songs are queued" embed.set_field_at(index=3, name="Queue", value=content, inline=False) if ctx.guild.id in self.message: await self.message[ctx.guild.id].edit(embed=embed) else: self.message[ctx.guild.id] = await ctx.send(embed=embed)
async def skipto(self, ctx, time): await ctx.channel.purge(limit=1) channel = ctx.message.author.voice.channel voice = get(bot.voice_clients, guild=ctx.guild) if voice and voice.is_connected(): voice = await voice.move_to(channel) else: voice = await channel.connect() if voice.is_playing(): self.songQueue[ctx.guild.id].insert(1, self.songQueue[ctx.guild.id][0]) self.musicTitles[ctx.guild.id].insert(1, self.musicTitles[ctx.guild.id][0]) self.skipToTime = TimeManager.timeParse(time) voice.stop() else: await ctx.send("Nothing to skip", delete_after=self.skipDeleteAfter) await ctx.send( f"**Skipped to:** {TimeManager.parseDuration(self.skipToTime)} **Requested by:** {ctx.message.author}", delete_after=self.skipDeleteAfter) await self.edit_message(ctx)
async def skip(self, ctx, time="0"): skipped = 0 requestTime = self.songStartTime - datetime.now() voice = get(bot.voice_clients, guild=ctx.guild) try: if int(time) == 0: await ctx.channel.purge(limit=1) if voice.is_playing(): await ctx.send("Track skipped", delete_after=self.skipDeleteAfter) self.skipToTime = 0 voice.stop() else: await ctx.send("Nothing is playing", delete_after=self.skipDeleteAfter) else: skipped += int(time) + abs(int(requestTime.total_seconds())) self.skipToTime += skipped await self.skipto(ctx, self.skipToTime) except: skipped += TimeManager.timeParse(time) + abs(int(requestTime.total_seconds())) self.skipToTime += skipped await self.skipto(ctx, self.skipToTime)
def playNext(self, ctx): voice = get(bot.voice_clients, guild=ctx.guild) if voice is None: del self.songQueue[ctx.guild.id] del self.musicTitles[ctx.guild.id] del self.message[ctx.guild.id] elif voice.is_connected(): endTime = self.songStartTime - datetime.now() end = self.skipToTime self.ffmpegOptions["before_options"] = f"-ss {self.skipToTime} -reconnect 1 " \ f"-reconnect_at_eof 1 -reconnect_streamed 1 " \ f"-reconnect_delay_max 5" voice.is_paused() if self.loop is True: self.songQueue[ctx.guild.id].append(self.songQueue[ctx.guild.id][0]) self.musicTitles[ctx.guild.id].append(self.musicTitles[ctx.guild.id][0]) end += abs(int(endTime.total_seconds())) if len(self.songQueue[ctx.guild.id]) > 1 and len(self.musicTitles[ctx.guild.id]) > 1: del self.songQueue[ctx.guild.id][0], self.musicTitles[ctx.guild.id][0] if TimeManager.timeParse(self.songQueue[ctx.guild.id][0]["duration"]) <= end: self.skipToTime = 0 voice.stop() asyncio.run_coroutine_threadsafe(self.edit_message(ctx), bot.loop) self.songStartTime = datetime.now() self._playMusic(ctx, self.ffmpegPathUrl, self.musicTitles[ctx.guild.id][0]) voice.is_playing() else: del self.songQueue[ctx.guild.id] del self.musicTitles[ctx.guild.id] del self.message[ctx.guild.id] asyncio.run_coroutine_threadsafe(voice.disconnect(), bot.loop) self.loop = False
def __init__(self): self.pimp = Hooker() self.time_manager = TimeManager(self, enable_hooks=self.pimp.get_hooks()) self.updater = Updater(self) HwBrightnessControl.set_first_br(self.time_manager.get_current_br())