Python discord 模块,Reaction() 实例源码
我们从Python开源项目中,提取了以下6个代码示例,用于说明如何使用discord.Reaction()。
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 _reaction_added(self, 1)
elif emoji == self.settings[server.id][DOWNVote]:
self._add_karma(author.id, -1)
except:
return
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
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 on_reaction_add(reaction, user):
"""The on_message event handler for this module
Args:
reaction (discord.Reaction): Input reaction
user (discord.User): The user that added the reaction
"""
# Simplify reaction info
server = reaction.message.server
emoji = reaction.emoji
data = datatools.get_data()
if not data["discord"]["servers"][server.id][_data.modulename]["activated"]:
return
# Commands section
if user != reaction.message.channel.server.me:
if server.id not in _data.cache or _data.cache[server.id].state == 'destroyed':
return
try:
valid_reaction = reaction.message.id == _data.cache[server.id].embed.sent_embed.id
except AttributeError:
pass
else:
if valid_reaction:
# Remove reaction
try:
await client.remove_reaction(reaction.message, emoji, user)
except discord.errors.NotFound:
pass
except discord.errors.Forbidden:
pass
# Commands
if emoji == "?":
await _data.cache[server.id].toggle()
if emoji == "?":
await _data.cache[server.id].stop()
if emoji == "?":
await _data.cache[server.id].skip("1")
if emoji == "?":
await _data.cache[server.id].rewind("1")
if emoji == "??":
await _data.cache[server.id].shuffle()
if emoji == "??":
await _data.cache[server.id].setvolume('-')
if emoji == "??":
await _data.cache[server.id].setvolume('+')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。