Ejemplo n.º 1
0
 def on_update_prefs(self, prefs, member):
     for daily_type in [dailytype.CadenceSpeed(), dailytype.RotatingSpeed()]:
         daily = self.daily(daily_type)
         today_daily = daily.today_number
         if prefs.hide_spoilerchat == True and not daily.has_submitted(today_daily, member.id):
             read_permit = discord.PermissionOverwrite()
             read_permit.read_messages = True
             yield from self.client.edit_channel_permissions(daily.spoilerchat_channel, member, read_permit)
         elif prefs.hide_spoilerchat == False:
             yield from self.client.delete_channel_permissions(daily.spoilerchat_channel, member)
Ejemplo n.º 2
0
    def on_new_daily(self, daily):
        daily_type = daily.daily_type
        today_date = daily.today_date
        today_number = daily.today_number
        today_seed = daily.get_seed(today_number)
        character = daily_type.character(today_number)
        
        # Make the leaderboard message
        text = daily.leaderboard_text(today_number, display_seed=False)
        msg = yield from self.client.send_message(daily.leaderboard_channel, text)
        daily.register_message(today_number, msg.id)

        # Update yesterday's leaderboard with the seed
        asyncio.ensure_future(self.update_leaderboard(today_number - 1, daily_type, display_seed=True))

        # Announce the new daily in spoilerchat
        asyncio.ensure_future(self.client.send_message(daily.spoilerchat_channel, "The {0} {1} daily has begun!".format(today_date.strftime("%B %d"), character)))
                
        # PM users with the daily_alert preference
        auto_pref = userprefs.UserPrefs()
        if daily_type == dailytype.CadenceSpeed():
            auto_pref.daily_alert = userprefs.DailyAlerts['cadence']
        elif daily_type == dailytype.RotatingSpeed():
            auto_pref.daily_alert = userprefs.DailyAlerts['rotating']
            
        for member in self.necrobot.prefs.get_all_matching(auto_pref):
            if daily.has_submitted(today_number - 1, member.id) or not daily.has_registered(today_number - 1, member.id):
                daily.register(today_number, member.id)
                asyncio.ensure_future(self.client.send_message(member, "({0}) Today's {2} speedrun seed: {1}".format(today_date.strftime("%d %b"), today_seed, character)))
            else:
                asyncio.ensure_future(self.client.send_message(member, "You have not yet submitted for yesterday's {0} daily, so I am not yet sending you today's seed. " \
                                                                        "When you want today's seed, please call `.dailyseed` in the main channel or via PM. (Use `.dailyseed -override` " \
                                                                        "to get today's seed and forfeit your ability to submit for yesterday's daily.)".format(character)))                        

        # Hide dailyspoilerchat for those users with that preference
        hide_pref = userprefs.UserPrefs()
        hide_pref.hide_spoilerchat = True
        members_to_hide_for = self.necrobot.prefs.get_all_matching(hide_pref)
        for member in members_to_hide_for:
            read_permit = discord.Permissions.none()
            read_permit.read_messages = True
            yield from self.client.edit_channel_permissions(daily.spoilerchat_channel, member, deny=read_permit)