python类Server()的实例源码

music.py 文件源码 项目:pcbot 作者: pckv 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def get_server_channel(server: discord.Server):
    """ Return the server's music channel or None. """
    for channel in server.channels:
        if channel.id in music_channels.data:
            return channel

    return None
music.py 文件源码 项目:pcbot 作者: pckv 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def client_connected(server: discord.Server):
    """ Returns True or False whether the bot is client_connected to the
    Music channel in this server. """
    channel = get_server_channel(server)
    return server.me.voice_channel == channel and server in voice_states
osu.py 文件源码 项目:pcbot 作者: pckv 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def get_notify_channels(server: discord.Server, data_type: str):
    """ Find the notifying channel or return the server. """
    if server.id not in osu_config.data["server"]:
        return None

    if data_type + "-channels" not in osu_config.data["server"][server.id]:
        return None

    return [server.get_channel(s) for s in osu_config.data["server"][server.id][data_type + "-channels"]
            if server.get_channel(s)]
moderate.py 文件源码 项目:pcbot 作者: pckv 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def setup_default_config(server: discord.Server):
    """ Setup default settings for a server. """
    # Set to defaults if there is no config for the server
    if server.id not in moderate.data:
        moderate.data[server.id] = default_config
        moderate.save()
        return

    # Set to defaults if server's config is missing values
    if not all(k in moderate.data[server.id].keys() for k in default_config):
        moderate.data[server.id] = default_config
        moderate.save()
moderate.py 文件源码 项目:pcbot 作者: pckv 项目源码 文件源码 阅读 15 收藏 0 点赞 0 评论 0
def get_changelog_channel(server: discord.Server):
    """ Return the changelog channel for a server. """
    setup_default_config(server)
    if not moderate.data[server.id]["changelog"]:
        return

    channel = discord.utils.get(server.channels, name="changelog")
    if not channel:
        return

    permissions = channel.permissions_for(server.me)
    if not permissions.send_messages or not permissions.read_messages:
        return

    return channel
moderate.py 文件源码 项目:pcbot 作者: pckv 项目源码 文件源码 阅读 15 收藏 0 点赞 0 评论 0
def on_member_unban(server: discord.Server, user: discord.Member):
    """ Update the changelog with unbanned members. """
    changelog_channel = get_changelog_channel(server)
    if not changelog_channel:
        return

    await client.send_message(changelog_channel, "{0.mention} was unbanned from the server.".format(user))
pokedex.py 文件源码 项目:pcbot 作者: pckv 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def assert_type(slot: str, server: discord.Server):
    """ Assert if a type does not exist, and show the valid types. """
    match = get_close_matches(slot, api["types"], n=1, cutoff=0.4)

    if match:
        matches_string = " Perhaps you meant `{}`?".format(match[0])
    else:
        matches_string = " See `{}help pokedex type`.".format(server_command_prefix(server))
    assert slot in api["types"], "**{}** is not a valid pokemon type.{}".format(
        slot.capitalize(), matches_string)
__init__.py 文件源码 项目:pcbot 作者: pckv 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def format_help(cmd: Command, server: discord.Server, no_subcommand: bool=False):
    """ Format the help string of the given command as a message to be sent.

    :param cmd: Type Command
    :param server: The server to generate help in.
    :param no_subcommand: Use only the given command's usage.
    :return: str: help message.
    """
    usage = cmd.usage(server) if no_subcommand else format_usage(cmd, server)

    # If there is no usage, the command isn't supposed to be displayed as such
    # Therefore, we switch to using the parent command instead
    if usage is None and cmd.parent is not None:
        return format_help(cmd.parent, server)

    command_prefix = config.server_command_prefix(server)
    desc = cmd.description.format(pre=command_prefix)

    # Format aliases
    alias_format = ""
    if cmd.aliases:
        # Don't add blank space unless necessary
        if not desc.strip().endswith("```"):
            alias_format += "\n"

        alias_format += "**Aliases**: ```{}```".format(
            ", ".join((command_prefix if identifier_prefix.match(alias[0]) and cmd.parent is None else "") +
                      alias for alias in cmd.aliases))

    return "**Usage**: ```{}```**Description**: {}{}".format(usage, desc, alias_format)
__init__.py 文件源码 项目:pcbot 作者: pckv 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def is_valid_server(cmd: Command, server: discord.Server):
    """ Return True if the command is allowed in server. """
    if not cmd.servers or server.id in cmd.servers:
        return True

    return False
scheduler.py 文件源码 项目:Squid-Plugins 作者: tekulvw 项目源码 文件源码 阅读 14 收藏 0 点赞 0 评论 0
def _add_event(self, name, command, dest_server, dest_channel,
                         author, timedelta, repeat=False):
        if isinstance(dest_server, discord.Server):
            dest_server = dest_server.id
        if isinstance(dest_channel, discord.Channel):
            dest_channel = dest_channel.id
        if isinstance(author, discord.User):
            author = author.id

        if dest_server not in self.events:
            self.events[dest_server] = {}

        event_dict = {'name': name,
                      'channel': dest_channel,
                      'author': author,
                      'command': command,
                      'timedelta': timedelta,
                      'repeat': repeat}

        log.debug('event dict:\n\t{}'.format(event_dict))

        now = int(time.time())
        event_dict['starttime'] = now
        self.events[dest_server][name] = event_dict.copy()

        event_dict['server'] = dest_server
        e = Event(event_dict.copy())
        await self._put_event(e)

        self.save_events()
emotes.py 文件源码 项目:Squid-Plugins 作者: tekulvw 项目源码 文件源码 阅读 26 收藏 0 点赞 0 评论 0
def _is_enabled(self, server):
        assert isinstance(server, discord.Server)
        if server.id not in self.settings:
            return False
        if not self.settings[server.id]["ENABLED"]:
            return False
        return True
emotes.py 文件源码 项目:Squid-Plugins 作者: tekulvw 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def _remove_all_emotes(self, server, chan_id, name=""):
        assert isinstance(server, discord.Server)
        if server.id not in self.available_emotes:
            return
        self.available_emotes[server.id] = \
            [emote for emote in self.available_emotes[server.id]
                if emote["chan_id"] != chan_id or emote["name"] == name]
        self.save_available_emotes()
emotes.py 文件源码 项目:Squid-Plugins 作者: tekulvw 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def _add_emote(self, server, chan_id):
        assert isinstance(server, discord.Server)
        if chan_id == -1:
            return
        if not os.path.exists("data/emotes/{}".format(chan_id)):
            os.makedirs("data/emotes/{}".format(chan_id))
        await self._remove_all_emotes(server, chan_id)
        for emote in self.emote_list:
            if chan_id == emote["images"][0].get("emoticon_set", -1):
                url = emote["images"][0].get("url", "")
                name = emote.get("regex", "")
                file_name = url.split('/')[-1]
                if url == "" or name == "":
                    continue
                if not os.path.exists('data/emotes/{}/{}'.format(chan_id,
                                                                 file_name)):
                    try:
                        async with aiohttp.get(url) as r:
                            image = await r.content.read()
                    except Exception as e:
                        print(
                            "Huh, I have no idea what errors aiohttp throws.")
                        print("This is one of them:")
                        print(e)
                        print(dir(e))
                        print("------")
                        continue
                    self._write_image(chan_id, file_name, image)
                if server.id not in self.available_emotes:
                    self.available_emotes[server.id] = {}
                self.available_emotes[server.id].append({
                    "name": name,
                    "file_name": file_name,
                    "chan_id": chan_id
                })
        self.save_available_emotes()
hublinker.py 文件源码 项目:Squid-Plugins 作者: tekulvw 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def master(self, ctx):
        """Makes this server a 'master' that others copy their roles from."""
        sid = ctx.message.server.id
        if sid not in self.links:
            self.links[sid] = {'ENABLED': False, 'SLAVES': []}
        await self.bot.say('Server ID: {}'.format(sid))
        self.save_links()
        log.debug("added master: {}".format(sid))
rss.py 文件源码 项目:Squid-Plugins 作者: tekulvw 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def get_feed_names(self, server):
        if isinstance(server, discord.Server):
            server = server.id
        ret = []
        if server in self.feeds:
            for channel in self.feeds[server]:
                ret = ret + list(self.feeds[server][channel].keys())
        return ret
audio.py 文件源码 项目:Shallus-Bot 作者: cgropp 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def _play(self, sid, url):
        """Returns the song object of what's playing"""
        if type(sid) is not discord.Server:
            server = self.bot.get_server(sid)
        else:
            server = sid

        assert type(server) is discord.Server
        log.debug('starting to play on "{}"'.format(server.name))

        if self._valid_playable_url(url) or "[SEARCH:]" in url:
            try:
                song = await self._guarantee_downloaded(server, url)
            except MaximumLength:
                log.warning("I can't play URL below because it is too long."
                            " Use [p]audioset maxlength to change this.\n\n"
                            "{}".format(url))
                raise
            local = False
        else:  # Assume local
            try:
                song = self._make_local_song(url)
                local = True
            except FileNotFoundError:
                raise

        voice_client = await self._create_ffmpeg_player(server, song.id,
                                                        local=local)
        # That ^ creates the audio_player property

        voice_client.audio_player.start()
        log.debug("starting player on sid {}".format(server.id))

        return song
settings.py 文件源码 项目:Shallus-Bot 作者: cgropp 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def get_server(self, server):
        if server is None:
            return self.bot_settings["default"].copy()
        assert isinstance(server, discord.Server)
        return self.bot_settings.get(server.id,
                                     self.bot_settings["default"]).copy()
settings.py 文件源码 项目:Shallus-Bot 作者: cgropp 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def get_server_admin(self, server):
        if server is None:
            return self.default_admin
        assert isinstance(server, discord.Server)
        if server.id not in self.bot_settings:
            return self.default_admin
        return self.bot_settings[server.id].get("ADMIN_ROLE", "")
settings.py 文件源码 项目:Shallus-Bot 作者: cgropp 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def set_server_admin(self, server, value):
        if server is None:
            return
        assert isinstance(server, discord.Server)
        if server.id not in self.bot_settings:
            self.add_server(server.id)
        self.bot_settings[server.id]["ADMIN_ROLE"] = value
        self.save_settings()
settings.py 文件源码 项目:Shallus-Bot 作者: cgropp 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def get_server_mod(self, server):
        if server is None:
            return self.default_mod
        assert isinstance(server, discord.Server)
        if server.id not in self.bot_settings:
            return self.default_mod
        return self.bot_settings[server.id].get("MOD_ROLE", "")


问题


面经


文章

微信
公众号

扫码关注公众号