python类User()的实例源码

api.py 文件源码 项目:Dwarf 作者: Dwarf-Community 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def get_user(self, user):
        """Retrieves a Dwarf `User` object from the database.

        Parameters
        ----------
        user
            Can be a Discord `User` object or `Member` object, or a user ID.
        """

        if isinstance(user, discord.User) or isinstance(user, discord.Member):
            return get_user_model().objects.get_or_create(id=user.id)
        else:
            return get_user_model().objects.get_or_create(id=user)
api.py 文件源码 项目:Dwarf 作者: Dwarf-Community 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def new_member(self, member=None, user=None, guild=None):
        """Creates a new Dwarf ?Member? object and connects it to the database.
        Either ?member? or both ?user? and ?guild? must be given as arguments.

        Parameters
        ----------
        member : Optional
            Has to be a Discord ?Member? object.
        user : Optional
            Can be a Discord `User` object or a user ID.
        guild : Optional
            Can be a Discord ?Server? object or a guild ID.
        """

        if isinstance(member, discord.Member):
            user_id = member.id
            guild_id = member.server.id
        else:
            if user is None or guild is None:
                raise ValueError("Either a Member object or both user ID "
                                 "and guild ID must be given as argument(s).")
            if isinstance(user, discord.User):
                user_id = user.id
            else:
                user_id = user
            if isinstance(guild, discord.Server):
                guild_id = guild.id
            else:
                guild_id = guild

        return Member(user=user_id, guild=guild_id)
ui_embed.py 文件源码 项目:modis 作者: Infraxion 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def user_warning(channel, user, warnings, max_warnings):
    """
    Creates an embed UI containing an user warning message

    Args:
        channel (discord.Channel): The Discord channel to bind the embed to
        user (discord.User): The user to warn
        warnings (str): The warnings for the user
        max_warnings (str): The maximum warnings for the user

    Returns:
        ui (ui_embed.UI): The embed UI object
    """

    username = user.name
    if isinstance(user, discord.Member):
        if user.nick is not None:
            username = user.nick

    warning_count_text = "warnings" if warnings != 1 else "warning"
    warning_text = "{} {}".format(warnings, warning_count_text)
    result_text = "at {} you will be banned".format(max_warnings)
    if warnings >= max_warnings:
        result_text = "you are being banned because you have more than the maximum warnings"

    # Create embed UI object
    gui = ui_embed.UI(
        channel,
        "Warning {}".format(username),
        "You now have {} {}, {}".format(warning_text, username, result_text),
        modulename=modulename
    )

    return gui
ui_embed.py 文件源码 项目:modis 作者: Infraxion 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def user_ban(channel, user):
    """
    Creates an embed UI containing an user warning message

    Args:
        channel (discord.Channel): The Discord channel to bind the embed to
        user (discord.User): The user to ban

    Returns:
        ui (ui_embed.UI): The embed UI object
    """

    username = user.name
    if isinstance(user, discord.Member):
        if user.nick is not None:
            username = user.nick

    # Create embed UI object
    gui = ui_embed.UI(
        channel,
        "Banned {}".format(username),
        "{} has been banned from this server".format(username),
        modulename=modulename
    )

    return gui
bot.py 文件源码 项目:discord-raid-coordinator 作者: dandesousa 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def get_raid_members(channel):
    """Gets the raid members in this channel."""
    return [target for target, _ in channel.overwrites if isinstance(target, discord.User)]
ListenerRegistry.py 文件源码 项目:ICO-Moderator 作者: Plenglin 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def is_admin(self, user: discord.User):
        """
        Check if a user is an admin
        :param user: the user to check
        :return: is an admin or not?
        """
        return user.id in self.admins
ListenerRegistry.py 文件源码 项目:ICO-Moderator 作者: Plenglin 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def is_muted(self, user: discord.User):
        """
        Check if a user is prevented from using emotes
        :param user: the user to check
        :return: is muted?
        """
        return user in self.muted
serverquotes.py 文件源码 项目:calebj-cogs 作者: calebj 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def _get_random_author_quote(self, ctx, author):
        sid = ctx.message.server.id

        if sid not in self.quotes or len(self.quotes[sid]) == 0:
            raise AssertionError("There are no quotes in this server!")

        if isinstance(author, discord.User):
            uid = author.id
            quotes = [(i, q) for i, q in enumerate(self.quotes[sid]) if q['author_id'] == uid]
        else:
            quotes = [(i, q) for i, q in enumerate(self.quotes[sid]) if q['author_name'] == author]

        if len(quotes) == 0:
            raise commands.BadArgument("There are no quotes by %s." % author)
        return randchoice(quotes)
album_commands.py 文件源码 项目:HAHA-NO-UR 作者: DamourYouKnow 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def _apply_sort(album: list, user: User) -> list:
    """
    Applys a user's sort to a card album.

    :param album: Album being sorted.
    :param user: User who requested the album.

    :return: Sorted album.
    """
    sort = _last_user_args[user.id]['sort']

    # FIXME This var doesn't seem to have any use.
    order = _last_user_args[user.id]['order']

    if not sort:
        return album
    if sort == 'date':
        sort = 'release_date'
    if sort == 'unit':
        sort = 'main_unit'
    if sort == 'subunit':
        sort = 'sub_unit'
    if sort == 'newest':
        sort = 'time_aquired'

    sort_descending = sort in [
        'rarity',
        'attribute',
        'release_date',
        'time_aquired',
        'main_unit',
        'sub_unit'
    ]

    return sorted(album, key=itemgetter(sort, 'id'), reverse=sort_descending)
bot.py 文件源码 项目:pcbot 作者: pckv 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def dispatch(self, event, *args, **kwargs):
        """ Override event dispatch to handle plugin events. """
        # Exclude blank messages
        if event == "message":
            message = args[0]
            if not message.content:
                return

        # Find every event that has a discord.Member argument, and filter out bots and self
        member = None
        for arg in list(args) + list(kwargs.values()):
            if isinstance(arg, discord.User):
                member = arg
                break
            elif isinstance(arg, discord.Message):
                member = arg.author
                break

        super().dispatch(event, *args, **kwargs)

        # We get the method name and look through our plugins' event listeners
        method = "on_" + event
        if method in plugins.events:
            for func in plugins.events[method]:
                # We'll only ignore bot messages if the event has disabled for bots
                if member and member.bot and not func.bot:
                    continue
                # Same goes for messages sent by ourselves. Naturally this requires func.bot == True
                if member and member == client.user and not func.self:
                    continue
                client.loop.create_task(self._handle_event(func, event, *args, **kwargs))
utils.py 文件源码 项目:pcbot 作者: pckv 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def format_objects(*objects, attr=None, dec: str="", sep: str=None):
    """ Return a formatted string of objects (User, Member, Channel or Server) using
    the given decorator and the given separator.

    :param objects: Any object with attributes, preferably User, Member, Channel or Server.
    :param attr: The attribute to get from any object. Defaults to object names.
    :param dec: String to decorate around each object.
    :param sep: Separator between each argument.
    :return: str: the formatted objects.
    """
    if not objects:
        return

    first_object = objects[0]
    if attr is None:
        if isinstance(first_object, discord.User):
            attr = "display_name"
        elif isinstance(first_object, discord.Channel) or isinstance(first_object, discord.Role):
            attr = "mention"
            sep = " "
        elif isinstance(first_object, discord.Server):
            attr = "name"

    sep = sep if sep is not None else ", "

    return sep.join(dec + getattr(m, attr) + dec for m in objects)
__init__.py 文件源码 项目:pcbot 作者: pckv 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def is_owner(user: discord.User):
    """ Return true if user/member is the assigned bot owner.

    :param user: discord.User, discord.Member or a str representing the user's ID.
    :raises: TypeError: user is wrong type.
    """
    if isinstance(user, discord.User):
        user = user.id
    elif type(user) is not str:
        raise TypeError("member must be an instance of discord.User or a str representing the user's ID.")

    if user == owner_cfg.data:
        return True

    return False
scheduler.py 文件源码 项目:Squid-Plugins 作者: tekulvw 项目源码 文件源码 阅读 21 收藏 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()
Jinux.py 文件源码 项目:jinux-discord 作者: Atomicbeast101 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def check_remindme():
    await dclient.wait_until_ready()
    while not dclient.is_closed:
        try:
            for reminders in con_ex.execute("SELECT * FROM reminder WHERE date <= Datetime('{}');".format(
                    datetime.now().strftime('%Y-%m-%d %X'))):
                if reminders[1] == '0':  # ME type
                    user = discord.User(id=reminders[2])
                    await dclient.send_message(user, '{}'.format(reminders[3]))
                    con_ex.execute('DELETE FROM reminder WHERE id={};'.format(reminders[0]))
                    con.commit()
                    log('REMINDER', 'Removed ID {} from database.'.format(reminders[0]))
                elif reminders[1] == '1':  # ALL type
                    user = dclient.get_channel(reminders[2])
                    await dclient.send_message(user, '{}'.format(reminders[3]))
                    con_ex.execute('DELETE FROM reminder WHERE id={};'.format(reminders[0]))
                    con.commit()
                    log('REMINDER', 'Removed ID {} from database.'.format(reminders[0]))
        except sqlite3.Error as ex:
            print('[{}]: {} - {}'.format(strftime("%b %d, %Y %X", localtime()), 'SQLITE',
                                         'Error when trying to select/delete data: ' + ex.args[0]))
            log_file.write('[{}]: {} - {}\n'.format(strftime("%b %d, %Y %X", localtime()), 'SQLITE',
                                                    'Error when trying to insert/delete data: ' + ex.args[0]))
        await asyncio.sleep(1)


# Custom cmd setup
context.py 文件源码 项目:dogbot 作者: slice 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def confirm(self, *, title: str, description: str, confirm_cancellation=False):
        """Confirms something."""
        embed = discord.Embed(color=discord.Color.red(), title=title, description=description)
        confirmation = await self.send(embed=embed)

        for tick in (self.bot.tick(tick_type, raw=True, guild=self.guild) for tick_type in ('green', 'red')):
            await confirmation.add_reaction(tick)

        while True:
            def check(reaction: discord.Reaction, adder: discord.User) -> bool:
                return adder == self.message.author and reaction.message.id == confirmation.id

            # wait for a reaction
            reaction, adder = await self.bot.wait_for('reaction_add', check=check)

            # ignore regular emoji
            if isinstance(reaction.emoji, str):
                continue

            if reaction.emoji.id == 318595000311087105:
                await confirmation.delete()
                return True
            elif reaction.emoji.id == 318595010385674240:
                await confirmation.delete()
                if confirm_cancellation:
                    await self.send('Operation cancelled.')
                return False
checks.py 文件源码 项目:dogbot 作者: slice 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def member_is_moderator(member: discord.Member) -> bool:
    """Returns whether a :class:`discord.Member` is a "Dogbot Moderator"."""
    if isinstance(member, discord.User) or not member.guild:
        return False

    names = [r.name for r in member.roles]
    has_moderator_role = any(name in mod_names for name in names)
    has_manage_server = member.guild_permissions.manage_guild
    is_server_owner = member.guild.owner == member
    return has_moderator_role or has_manage_server or is_server_owner
quotes.py 文件源码 项目:goldmine 作者: Armored-Dragon 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def quoteadd(self, ctx, target: discord.User, *, text: str):
        """Add a quote.
        Usage: quoteadd [member] [text here]"""
        if len(text) > 360:
            await ctx.send(ctx.mention + ' Your text is too long!')
            return
        if target == self.bot.user:
            if not check_perms(ctx, ('bot_owner',)):
                await ctx.send(ctx.mention + ' You can\'t add a quote as me!')
                return
        fmt_time = [int(i) for i in time.strftime("%m/%d/%Y").split('/')]
        q_template = {
            'id': 0,
            'quote': 'Say-whaaaa?',
            'author': ctx.author.display_name,
            'author_ids': [''],
            'date': fmt_time
        }
        mauthor = target
        q_template['quote'] = text.replace('\n', ' ').replace('@everyone', '@\u200beveryone').replace('@here', '@\u200bhere')
        q_template['author'] = mauthor.display_name
        if mauthor.display_name != mauthor.name:
            q_template['author'] += ' (' + mauthor.name + ')'
        q_template['author_ids'] = [mauthor.id, ctx.author.id]
        q_template['id'] = len(self.bot.store['quotes']) # +1 for next id, but len() counts from 1
        self.bot.store['quotes'].append(q_template)
        await ctx.send(f'Quote **#{q_template["id"] + 1}** added!')
utility.py 文件源码 项目:goldmine 作者: Armored-Dragon 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def avatar(self, ctx, *, target: discord.User):
        """Get someone's avatar.
        Usage: avatar [member]"""
        await ctx.send(target.avatar_url)
utility.py 文件源码 项目:goldmine 作者: Armored-Dragon 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def nick(self, ctx, *, nick: str):
        """Set your nickname.
        Usage: nick [new nickname]"""
        if ctx.author.guild_permissions.change_nickname:
            await ctx.author.edit(nick=nick, reason='User requested using command')
            await ctx.send(':thumbsup: Done.')
        else:
            await ctx.send(':x: You don\'t have permission to change your nickname.')
Nep.py 文件源码 项目:Neppy 作者: VorgunTheBeta 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def on_member_join(member):
        if member.server.id=='154009582748827648':
                channel = discord.Object(id='160670845675634688')
                message = "{0.name} has joined the server~"
                await bot.send_message(channel, message.format(member))
                user = discord.User()
                user.id = member.id
                await bot.send_message(user, Text("greeting.txt").format(member))


问题


面经


文章

微信
公众号

扫码关注公众号