我试图找出如何在每次调用我的函数时生成一个新的 random.choice() 当我的函数调用位置参数时



Using Pycord.

每次调用函数时,我都试图获得一个新的随机选择,但我无法这样做,因为我必须在字段eDuel.set_image中定义一个URL。目前,只有"决斗样品"。随机化一次,选择的列表对象在每次后续的函数调用中使用。

随机初始化的代码:

DuelSamples = ["https://pbs.twimg.com/media/COd5G_EUwAAtABd.jpg", "https://media.tenor.com/XoYV9sqXITkAAAAC/yu-gi-oh-time-to-duel.gif"]
eDuel = discord.Embed(
title="I challenge you to a duel!",
description="",
color=discord.Colour.brand_red()
)
eDuel.set_image(url = random.choice(DuelSamples))

函数代码:

@client.event #Message Watcher
async def on_message(message):
user = message.author
if message.author == client.user:
return    
async for message in message.channel.history(after=datetime.now() - timedelta(seconds = 2), before=message.created_at):
if user == message.author:
return
else:
if not (message.channel.id == 922678396486553685): 
return
else: 
if random.randint(1,1) == 1:
await message.channel.send(f"<@{user.id}> n ** **",embed = eDuel, view = DuelButton())
player.insert(1, user.id)
elif random.randint(1,50) == 1:
await message.channel.send(f"<@{user.id}> n ** **",embed = eGlitcherFetch, view = GFetch())
player.insert(1, user.id)

如果我试图从eDuel.set_image中废弃url =并将该字段输入到我的列表对象中,我得到一个返回:"需要1个位置参数">(可以理解)

我还试图将eDuel.set_image完全传递到列表中,并将random.choice(DuelSamples)扔到eDuel嵌入下面,但它无法检测到set_image正在被请求,因此没有图像自然

您只定义了一次图像,然后每次都调用该定义的图像,查看您的代码,实现您想要的最简单的方法是:

if random.randint(1,1) == 1:
eDuel.set_image(url = random.choice(DuelSamples))
await message.channel.send(f"<@{user.id}> n ** **",embed = eDuel, view = DuelButton())
player.insert(1, user.id)

这样每次它都会运行选择器。

相关内容

最新更新