Python discord 模块,Emoji() 实例源码
我们从Python开源项目中,提取了以下16个代码示例,用于说明如何使用discord.Emoji()。
def _reaction_removed(self, reaction: discord.Reaction, user: discord.User):
if self.setting_emojis: return # Don't change karma whilst adding/removing emojis
server = reaction.message.server
author = reaction.message.author
if author == user: return # Users can't change their own karma
emoji = reaction.emoji
if isinstance(emoji, discord.Emoji):
emoji = emoji.name
else:
emoji = name(emoji)
try:
if emoji == self.settings[server.id][UPVote]:
self._add_karma(author.id, -1)
elif emoji == self.settings[server.id][DOWNVote]:
self._add_karma(author.id, 1)
except:
return
def guild(self, ctx):
"""Retrieves information about this guild."""
guild = ctx.guild
e = discord.Embed(type='rich', color=blurple)
e.set_thumbnail(url=guild.icon_url)
e.add_field(name='Name', value=guild.name)
e.add_field(name='ID', value=guild.id)
e.add_field(name='Created at', value=guild.created_at.strftime(datetime_format))
e.add_field(name='Owner', value=guild.owner)
e.add_field(name='Members', value=guild.member_count)
e.add_field(name='Channels', value=len(guild.channels))
e.add_field(name='Roles', value=len(guild.role_hierarchy)-1) # Remove @everyone
e.add_field(name='Emoji', value=len(guild.emojis))
e.add_field(name='Region', value=guild.region.name)
e.add_field(name='Icon URL', value=guild.icon_url or 'This guild has no icon.')
await ctx.send(embed=e)
def _reaction_added(self, 1)
elif emoji == self.settings[server.id][DOWNVote]:
self._add_karma(author.id, -1)
except:
return
def emoteurl(self, *, emote:discord.Emoji):
"""Gets the url for a CUSTOM emote (meaning no emotes like :eyes: and :ok_hand:)"""
await self.bot.say(emote.url)
def permissions(self, ctx, member:Member=None):
'''
Checks what permissions a given user has in the mentioned channel
'''
# Checks for a tagged member
if member == None:
member = ctx.message.author
# ? TICK
# ? CROSS
# ?? ?
w = {True:'??', False:'?'}
# Store the channel
channel = ctx.message.channel
p = channel.permissions_for(member)
o = OrderedDict()
o['Read Messages'] = w[p.read_messages]
o['Send Messages'] = w[p.send_messages]
o['TTS'] = w[p.send_tts_messages]
o['Manage Messages'] = w[p.manage_messages]
o['Embed Links'] = w[p.embed_links]
o['Attach Files'] = w[p.attach_files]
o['Read Message History'] = w[p.read_message_history]
o['Mention Everyone'] = w[p.mention_everyone]
o['Change Nickanme'] = w[p.change_nickname]
o['Manage Nicknames'] = w[p.manage_nicknames]
o['Manage Roles'] = w[p.manage_roles]
o['Manage Emoji'] = w[p.manage_emojis]
o['Manage Channels'] = w[p.manage_channels]
o['Kick Members'] = w[p.kick_members]
o['Ban Members'] = w[p.ban_members]
o['Administrator'] = w[p.administrator]
e = makeEmbed(fields=o)
await self.sparcli.say(embed=e)
def customemojiinfo(self, emoji: discord.Emoji):
"""display information for a custom emoji.
* emoji - The emoji to get information about."""
embed = discord.Embed(title=emoji.name)
embed.description = f"{emoji.id} | [Full image]({emoji.url})"
embed.add_field(name="Guild", value=f"{emoji.guild.name} ({emoji.guild.id})")
embed.add_field(name="Managed", value=emoji.managed)
embed.add_field(name="Created at", value=emoji.created_at.ctime())
embed.set_thumbnail(url=emoji.url)
await ctx.send(embed=embed)
def create_emoji(_name, _id): return Emoji(name=_name, id=_id, server=294213994787635200)
def get_emote(emote_id: str, server: discord.Server):
""" Return the image of a custom emote. """
emote = discord.Emoji(id=emote_id, server=server)
# Return the cached version if possible
if emote.id in emote_cache:
return Image.open(emote_cache[emote.id])
# Otherwise,download the emote,store it in the cache and return
emote_bytes = await utils.download_file(emote.url, bytesio=True)
emote_cache[emote.id] = emote_bytes
return Image.open(emote_bytes)
def on_guild_emojis_update(self, guild: discord.Guild, before: 'List[discord.Emoji]',
after: 'List[discord.Emoji]'):
added, removed = diff(before, after)
if not added and not removed:
# Todo: Handle renames
return
differences = describe_differences(self.bot, added, removed)
await self.log(guild, f'\N{FRAME WITH PICTURE} Emoji updated: {differences}')
def _create_emoji_list(reactions):
for reaction in reactions:
emoji = reaction.emoji
if isinstance(emoji, discord.Emoji):
emoji = emoji.name
yield emoji
def _set_reaction(self, server, type):
emoji = reaction.emoji
if isinstance(emoji, discord.Emoji):
emoji = emoji.name
else:
emoji = name(emoji)
if server.id not in self.settings:
self.settings[server.id] = {}
self.settings[server.id][type] = emoji
dataIO.save_json(SETTINGS_PATH, self.settings)
def fmt_emote(match, mobj):
str = match.group(0)
str = str[2:-1]
name, id = str.split(":")
emoji = discord.Emoji(id=id, server=mobj.server)
fmt = '<img src="{}"/>'.format(emoji.url)
return fmt
def regional(self, msg: str):
"""Convert a Text to emotes."""
regional_list = self.to_regionals(msg, False)
regional_output = []
for i in regional_list:
regional_output.append(" ")
if isinstance(i, discord.Emoji):
regional_output.append(str(i))
else:
regional_output.append(i)
await edit(ctx, content=''.join(regional_output))
def id_(self, argument: Union(Emoji, Role, TextChannel, VoiceChannel, Member, User)):
await ctx.send(f"{argument.name}'s ID is {argument.id}")
def emoji(self, emoji : FailsafeEmojiConverter):
"""Retrieves information about an emoji."""
e = discord.Embed(type='rich', color=blurple)
if isinstance(emoji, discord.Emoji):
url = emoji.url.replace('discordapp.com/api', 'cdn.discordapp.com')
e.set_thumbnail(url=url)
e.add_field(name='Name', value=emoji.name)
e.add_field(name='ID', value=emoji.id)
e.add_field(name='Created at', value=emoji.created_at.strftime(datetime_format))
e.add_field(name='URL', value=url)
else:
e.add_field(name='Name', value=unicodedata.name(emoji))
e.add_field(name='ID', value='Built-in')
await ctx.send(embed=e)
def describe(thing: Any, mention=False, before='', created=False, joined=False, quote=False):
"""
Returns a string representing an project. Usually consists of the object in string form,
then the object's ID in parentheses after.
Parameters
----------
thing
The thing to describe. Usually a superclass of :class:`discord.Object`.
mention
Specifies whether to mention the thing instead of using its string representation.
before
Specifies text to insert after name and ID.
created
Specifies whether to append the ``created_at`` attribute,post-processed with :func:`ago`.
joined
Specifies whether to append the ``joined_at`` attribute,post-processed with :func:`ago`.
quote
Specifies whether to quote the name of the thing.
"""
# get name,might be mention
name = str(thing) if not mention else thing.mention
# handle emoji specially
if isinstance(thing, discord.Emoji):
name = f'`{":" + thing.name + ":" if thing.require_colons else thing.name}`'
if quote:
name = '"' + name + '"'
# name + id
message = f'{name} (`{thing.id}`)'
# objects have id only
if isinstance(thing, discord.Object):
message = f'`{thing.id}`'
if before:
message += ' ' + before
if created:
message += f',created {ago(thing.created_at)}'
if joined and isinstance(thing, discord.Member):
message += f',joined {ago(thing.joined_at)}'
return message