【发布时间】:2020-11-29 20:54:11
【问题描述】:
我已经尝试解决一个问题好几天了。我想发送一个 embet naricht 并且应该在有人做出反应后立即对其进行编辑。
这里是我截取的代码:
embed = discord.Embed(title='General Information', color=16769251)
embed.set_footer(text='General information')
embed.set_thumbnail(url=message.guild.icon_url)
embed.add_field(name='Text Header ', value=all_lines[1], inline=False)
embed.add_field(name='Text Header 2: ', value=all_lines[2], inline=False)
embed.add_field(name='Accepted Users: ', 'HERE ALL USERS WITH ✅', inline=False)
mess = await message.send(embed=embed)
await mess.add_reaction('✅')
await mess.add_reaction('❌')
我已经尝试了很多东西,但不幸的是没有成功,我认为把所有东西都放在这里实在是太过分了
这里是一个例子: 之前(没有反应)
https://i.gyazo.com/1518bc2bfe8b55e2e790ff6481c261f7.png
反应后:
https://i.gyazo.com/8bf97513e1eaf567ca9dda66f54fa2f0.png
带有 1 个小刷新错误的最终版本:
async def ReportRaid(self, message, bot):
name = message.author
if message.author.bot:
return
else:
await message.delete()
args = message.content.split(' ')
# raid <type> <name> <setting> <min>
# 0 1 2 3 4
if args[0] == "/raid" or args[0] == "/Raid":
embed = discord.Embed(title='Raid meldung von ' + str(message.author.display_name))
embed.add_field(name='Raid Typ: ', value=args[1], inline=True)
embed.add_field(name='Name: ', value=args[2], inline=True)
embed.add_field(name=settings.RaidSetings[args[3]], value=args[4] + " Minuten", inline=True)
embed.add_field(name='Zusagen:', value='Keine Zusagen', inline=True)
if not args[2].lower() in pkm.pokeDir[args[1].lower()]:
await message.channel.send('Das pokemon konnte nicht gefunden werden.', delete_after=30.0)
return
else:
embed.set_thumbnail(
url=settings.ServerSettings["ImageURL"] + pkm.pokeDir[args[1].lower()][args[2].lower()] + '.png')
try:
with open('accounts/Ac' + str(name) + '.txt', "r") as fp:
all_lines = fp.readlines()
embed.set_footer(text='Trainer name: {} \nTrainer Code: {}'.format(all_lines[1], all_lines[3]))
tgName = all_lines[3]
except IOError:
embed.set_footer(text='Keine Informationen gefunden')
tgName = "Keinen Trainer code gefunden"
channel = bot.get_channel(int(await guild_setings.LoadGuildSettings().get_raid_channel(message)))
mess = await channel.send(embed=embed, delete_after=int(args[4]) * 60)
tg.TelegramBot(message, '**\nRaid Typ: ' + args[1] + "\nName: " + args[2] + "\n" + settings.RaidSetings[args[3]] + " " + args[4] + ' Minuten\nTriainer Code: ' + tgName + '\nRaid Meldung von: ' + str(message.author.display_name)).SendToTelegramm()
re_time = int(args[4]) * 60
emoji_list = ['✅', '❌']
for i in emoji_list:
await mess.add_reaction(i)
while True:
users = ""
try:
reaction, user= await bot.wait_for("reaction_add", timeout=re_time)
if str(reaction) == '✅':
mess = await channel.fetch_message(mess.id)
reaction_list = mess.reactions
for reactions in reaction_list:
if str(reactions) == "✅":
user_list = [user async for user in reactions.users() if user != bot.user]
for user in user_list:
users = users + user.mention + "\n"
embed_1 = discord.Embed(title='Raid meldung von ' + str(message.author.display_name))
embed_1.add_field(name='Raid Typ: ', value=args[1], inline=True)
embed_1.add_field(name='Name: ', value=args[2], inline=True)
embed_1.add_field(name=settings.RaidSetings[args[3]], value=args[4] + " Minuten", inline=True)
embed_1.add_field(name='Zusagen:', value=users, inline=True)
if not args[2].lower() in pkm.pokeDir[args[1].lower()]:
await message.channel.send('Das pokemon konnte nicht gefunden werden.', delete_after=30.0)
return
else:
embed_1.set_thumbnail(
url=settings.ServerSettings["ImageURL"] + pkm.pokeDir[args[1].lower()][args[2].lower()] + '.png')
try:
with open('accounts/Ac' + str(name) + '.txt', "r") as fp:
all_lines = fp.readlines()
embed_1.set_footer(text='Trainer name: {} \nTrainer Code: {}'.format(all_lines[1], all_lines[3]))
except IOError:
embed_1.set_footer(text='Keine Informationen gefunden')
await mess.edit(embed = embed_1)
except asyncio.TimeoutError:
break
【问题讨论】:
-
你打算如何工作?就像现在一样,它正在将 DM 中的嵌入发送给使用该命令的人。是否应该在频道中发送嵌入内容并在会员做出反应时进行更新?
-
我在反应前后添加了 2 张图像,一个示例。我将列出所有对我的消息有反应的用户
标签: python python-3.x discord discord.py discord.py-rewrite