コード例 #1
0
ファイル: dispatch_tests.py プロジェクト: HuyaneMatsu/Koishi
    async def user_presence_update(self, client, user, old):
        Task(self.old_events['user_presence_update'](client, user, old),
             KOKORO)
        if self.channel is None:
            return

        result = [f'Presence update on user: {user:f} {user.id}']
        try:
            statuses = old['statuses']
        except KeyError:
            pass
        else:
            for key in ('desktop', 'mobile', 'web'):
                result.append(
                    f'{key} status: {statuses.get(key, Status.offline)} -> {user.statuses.get(key, Status.offline)}'
                )

            try:
                status = old['status']
            except KeyError:
                pass
            else:
                result.append(f'status changed: {status} -> {user.status}')

        try:
            activities = old['activities']
        except KeyError:
            pass
        else:
            added, updated, removed = activities
            if (added is not None):
                for activity in added:
                    result.append('Added activity:')
                    result.extend(pretty_print(activity))

            if (updated is not None):
                for activity_change in updated:
                    result.append('Activity updated:')
                    activity = activity_change.activity
                    for key, value in activity_change.old_attributes.items():
                        result.append(
                            f'- {key} : {value} -> {getattr(activity, key)}')

            if (removed is not None):
                for activity in removed:
                    result.append('Removed activity:')
                    result.extend(pretty_print(activity))

        pages = [Embed(description=chunk) for chunk in cchunkify(result)]
        await Pagination(client, self.channel, pages, timeout=120.)
コード例 #2
0
ファイル: dispatch_tests.py プロジェクト: HuyaneMatsu/Koishi
    async def embed_update(self, client, message, flag):
        Task(self.old_events['embed_update'](client, message, flag), KOKORO)
        if self.channel is None:
            return

        result = [f'Message {message.id} got embed update:']

        channel = message.channel
        result.append(f'At channel : {channel:d} {channel.id}')
        guild = channel.guild
        if guild is not None:
            result.append(f'At guild : {guild.name} {guild.id}')

        if flag == 3:
            result.append('Less embeds than before???')
        else:
            if flag == 1:
                result.append('Only sizes were update.')
            elif flag == 2:
                result.append('Links! Links everywhere...')

            embeds = message.embeds
            if embeds is None:
                result.append('This should not happen, there are no embeds...')
            else:
                if flag == 1:
                    for index, embed in enumerate(embeds, 1):
                        if flag == 1:
                            collected = []
                            image = embed.image
                            if image is not None:
                                collected.append(
                                    ('image.height', image.height))
                                collected.append(('image.width', image.width))
                            thumbnail = embed.thumbnail
                            if thumbnail is not None:
                                collected.append(
                                    ('thumbnail.height', thumbnail.height))
                                collected.append(
                                    ('thumbnail.width', thumbnail.width))
                            video = embed.video
                            if video is not None:
                                collected.append(
                                    ('video.height', video.height))
                                collected.append(('video.width', video.width))
                            if collected:
                                result.append(
                                    f'Sizes got update at embed {index}:')
                                for name, value in collected:
                                    result.append(f'- {name} : {value}')
                elif flag == 2:
                    for index, embed in enumerate(embeds, 1):
                        if embed.type in EXTRA_EMBED_TYPES:
                            result.append(
                                f'New embed appeared at index {index}:')
                            result.extend(pretty_print(embed))

        text = cchunkify(result)
        pages = [Embed(description=chunk) for chunk in text]
        await Pagination(client, self.channel, pages, timeout=120.)
コード例 #3
0
ファイル: dispatch_tests.py プロジェクト: JohnnyStein/Koishi
 async def invite_delete(self,client,invite):
     Task(self.old_events['invite_delete'](client, invite), KOKORO)
     if self.channel is None:
         return
 
     text = pretty_print(invite)
     text.insert(0, f'Invite deleted:')
     pages = [Embed(description=chunk) for chunk in cchunkify(text)]
     await Pagination(client, self.channel, pages,120.)
コード例 #4
0
ファイル: dispatch_tests.py プロジェクト: JohnnyStein/Koishi
 async def message_delete(self,client, message):
     Task(self.old_events['message_delete'](client, message), KOKORO)
     if self.channel is None:
         return
     
     text = pretty_print(message)
     text.insert(0, f'Message {message.id} got deleted')
     pages = [Embed(description=chunk) for chunk in cchunkify(text)]
     await Pagination(client, self.channel, pages,120.)
コード例 #5
0
ファイル: dispatch_tests.py プロジェクト: JohnnyStein/Koishi
 async def role_create(self,client,role):
     Task(self.old_events['role_create'](client,role,), KOKORO)
     if self.channel is None:
         return
     
     result=pretty_print(role)
     result.insert(0, f'A role got created at {role.guild.name} {role.guild.id}')
     pages=[Embed(description=chunk) for chunk in cchunkify(result)]
     await Pagination(client, self.channel, pages,120.)
コード例 #6
0
ファイル: dispatch_tests.py プロジェクト: JohnnyStein/Koishi
 async def guild_create(self,client, guild):
     Task(self.old_events['guild_create'](client, guild,), KOKORO)
     if self.channel is None:
         return
     
     result = pretty_print(guild)
     result.insert(0, f'Guild created: {guild.id}')
     pages = [Embed(description=chunk) for chunk in cchunkify(result)]
     await Pagination(client, self.channel, pages,120.)
コード例 #7
0
ファイル: dispatch_tests.py プロジェクト: JohnnyStein/Koishi
 async def emoji_delete(self,client, emoji, guild):
     Task(self.old_events['emoji_delete'](client, emoji, guild), KOKORO)
     if self.channel is None:
         return
     
     result=pretty_print(emoji)
     result.insert(0, f'Emoji deleted: {emoji.name} {emoji.id} at guild {guild!r}')
     pages=[Embed(description=chunk) for chunk in cchunkify(result)]
     await Pagination(client, self.channel, pages,120.)
コード例 #8
0
ファイル: dispatch_tests.py プロジェクト: JohnnyStein/Koishi
 async def channel_create(self,client,channel):
     Task(self.old_events['channel_create'](client,channel), KOKORO)
     if self.channel is None:
         return
     
     result=pretty_print(channel)
     result.insert(0, f'A channel was created: {channel.name} {channel.id}\nchannel type: {channel.__class__.__name__} ({channel.type})')
     pages=[Embed(description=chunk) for chunk in cchunkify(result)]
     await Pagination(client, self.channel, pages,120.)
コード例 #9
0
ファイル: dispatch_tests.py プロジェクト: JohnnyStein/Koishi
 async def integration_edit(self, client, guild, integration):
     Task(self.old_events['integration_edit'](client, guild, integration), KOKORO)
     if self.channel is None:
         return
     
     text = pretty_print(integration)
     text.insert(0, f'integration_edit at {guild.name} ({guild.id}):')
     pages = [Embed(description=chunk) for chunk in cchunkify(text)]
     
     await Pagination(client, self.channel, pages, 120.)
コード例 #10
0
ファイル: dispatch_tests.py プロジェクト: JohnnyStein/Koishi
 async def user_voice_leave(self, client, voice_state):
     Task(self.old_events['user_voice_leave'](client, voice_state), KOKORO)
     if self.channel is None:
         return
     
     result = []
     result.append('User voice leave')
     result.extend(pretty_print(voice_state))
     
     pages = [Embed(description=chunk) for chunk in cchunkify(result)]
     await Pagination(client, self.channel, pages, 120.)
コード例 #11
0
ファイル: dispatch_tests.py プロジェクト: JohnnyStein/Koishi
    async def guild_delete(self,client, guild, profile):
        Task(self.old_events['guild_delete'](client, guild, profile), KOKORO)
        if self.channel is None:
            return
        
        result=pretty_print(guild)
        result.insert(0, f'Guild deleted {guild.id}')
        result.insert(1, f'I had {len(profile.roles)} roles there')
        result.insert(2, 'At least i did not boost' if (profile.boosts_since is None) else 'Rip by boost ahhhh...')

        pages=[Embed(description=chunk) for chunk in cchunkify(result)]
        await Pagination(client, self.channel, pages,120.)
コード例 #12
0
ファイル: dispatch_tests.py プロジェクト: JohnnyStein/Koishi
 async def reaction_delete_emoji(self,client, message, emoji, users):
     Task(self.old_events['reaction_delete_emoji'](client, message, emoji, users), KOKORO)
     if self.channel is None:
         return
     
     if users is None:
         text = []
     else:
         text = pretty_print(users)
     text.insert(0, f'{emoji:e} were removed from message {message.id}:')
     pages = [Embed(description=chunk) for chunk in cchunkify(text)]
     await Pagination(client, self.channel, pages,120.)
コード例 #13
0
ファイル: dispatch_tests.py プロジェクト: JohnnyStein/Koishi
 async def reaction_clear(self,client, message, old):
     Task(self.old_events['reaction_clear'](client, message, old), KOKORO)
     if self.channel is None:
         return
     
     if old is None:
         text = []
     else:
         text = pretty_print(old)
     text.insert(0, f'Reactions got cleared from message {message.id}:')
     pages = [Embed(description=chunk) for chunk in cchunkify(text)]
     await Pagination(client, self.channel, pages,120.)
コード例 #14
0
ファイル: dispatch_tests.py プロジェクト: JohnnyStein/Koishi
    async def message_edit(self,client, message, old):
        Task(self.old_events['message_edit'](client, message, old), KOKORO)
        if self.channel is None:
            return
        
        result=[f'Message {message.id} was edited']
        
        channel=message.channel
        result.append(f'At channel : {channel:d} {channel.id}')
        guild=channel.guild
        if guild is not None:
            result.append(f'At guild : {guild.name} {guild.id}')
        
        if old is None:
            result.append('The message is uncached, cannot provide changes!')
            content = message.content
            content_ln = len(content)
            result.append(f'content: (len={content_ln})')
            if content_ln > 500:
                content = content[:500].replace('`', '\\`')
                result.append(f'--------------------\n{content}\n... +{content_ln-500} more\n--------------------')
            else:
                content=content.replace('`', '\\`')
                result.append(f'--------------------\n{content}\n--------------------')
            
        else:
            for key, value in old.items():
                if key in ('pinned', 'activity_party_id', 'everyone_mention'):
                    result.append(f'{key} changed: {value!r} -> {getattr(message, key)!r}')
                    continue
                if key in ('edited',):
                    if value is None:
                        result.append(f'{key} changed: None -> {getattr(message, key):%Y.%m.%d-%H:%M:%S}')
                    else:
                        result.append(f'{key} changed: {value:%Y.%m.%d-%H:%M:%S} -> {getattr(message, key):%Y.%m.%d-%H:%M:%S}')
                    continue
                if key in ('application', 'activity', 'attachments', 'embeds'):
                    result.append(f'{key} changed:')
                    if value is None:
                        result.append('From None')
                    else:
                        result.extend(pretty_print(value))
                    value = getattr(message, key)
                    if value is None:
                        result.append('To None')
                    else:
                        result.extend(pretty_print(value))
                    continue
                if key in ('content',):
                    result.append(f'{key} changed from:')
                    content=value
                    break_ = False
                    while True:
                        content_ln = len(content)
                        result.append(f'{key}: (len={content_ln})')
                        if content_ln > 500:
                            content = content[:500].replace('`', '\\`')
                            result.append(f'--------------------\n{content}\n... +{content_ln-500} more\n--------------------')
                        else:
                            content = content.replace('`', '\\`')
                            result.append(f'--------------------\n{content}\n--------------------')
                        if break_:
                            break
                        break_ = True
                        content = getattr(message, key)
                        result.append('To:')
                    continue
                if key in ('user_mentions', 'role_mentions', 'cross_mentions'):
                    removed, added = listdifference(value, getattr(message, key))
                    if removed:
                        result.append(f'{key} removed : {len(removed)}')
                        for obj in removed:
                            result.append(f'- {obj.name} {obj.id}')
                            
                    if added:
                        result.append(f'{key} added : {len(added)}')
                        for obj in added:
                            result.append(f'- {obj.name} {obj.id}')
                        
                    continue
                
                if key in ('flags',):
                    old = list(value)
                    old.sort()
                    value = getattr(message, key)
                    new = list(value)
                    new.sort()
                    removed, added = listdifference(old,new)
                    if removed:
                        result.append(f'{key} removed : {len(removed)}')
                        for name in removed:
                            result.append(f'- {name}')
                            
                    if added:
                        result.append(f'{key} added : {len(added)}')
                        for name in added:
                            result.append(f'- {name}')
                        
                    continue

        text = cchunkify(result)
        pages = [Embed(description=chunk) for chunk in text]
        await Pagination(client, self.channel, pages,120.)