我正在尝试制作一个不和谐的机器人 我将命令设置为 ?p 这将产生一个怪物,我们必须抓住它 但是每当我打开我的机器人并执行 ?p 命令时,它只会一次又一次地产生相同的怪物,并且一次又一次地给出相同的滚动。这是代码 -
import discord
import random
from random import randint
Mons = ["Ekans", "Pidgey", "Pikachu", "Espeon"]
random_mons = random.choice(Mons)
pokemon_roll = randint(1, 100)
pb_roll = randint(20, 100)
gb_roll = randint(40, 100)
ub_roll = randint(60, 100)
mb_roll = 100
@client.event
async def on_message(message):
if message.content.startswith('?p'):
msg = f'A wild {random_mons} appeared!'.format(message)
await message.channel.send (msg)
elif message.content.startswith('pb') and pokemon_roll>pb_roll:
await message.channel.send (f'{random_mons} broke out of pb, {pb_roll}, {pokemon_roll}')
elif message.content.startswith('pb') and pokemon_roll<pb_roll:
await message.channel.send (f'congrats, you caught {random_mons} with pb, {pb_roll},
{pokemon_roll}')
我想在pokemon_roll低于pb_roll的基础上抓到怪物 但每次相同的滚动和相同的怪物产生
答案 0 :(得分:0)
您应该在 random_mons
内定义 async def on_message(message)
。另外,我认为您的缩进是错误的。正确的做法是:
import discord
import random
from random import randint
Mons = ["Ekans", "Pidgey", "Pikachu", "Espeon"]
# defining anything here makes it a global variable to this file
@client.event
async def on_message(message):
# also better if you declare Mons here
random_mons = random.choice(Mons)
pokemon_roll = randint(1, 100)
pb_roll = randint(20, 100)
gb_roll = randint(40, 100)
ub_roll = randint(60, 100)
mb_roll = 100
if message.content.startswith('?p'):
msg = f'A wild {random_mons} appeared!'.format(message)
await message.channel.send (msg)
elif message.content.startswith('pb') and pokemon_roll>pb_roll:
await message.channel.send (f'{random_mons} broke out of pb, {pb_roll}, {pokemon_roll}')
elif message.content.startswith('pb') and pokemon_roll<pb_roll:
await message.channel.send (f'congrats, you caught {random_mons} with pb, {pb_roll},
{pokemon_roll}')
编辑根据评论,您可以执行以下操作:
@client.event
async def on_message(message):
# also better if you declare Mons here
random_mons = random.choice(Mons)
pokemon_roll = randint(1, 100)
pb_roll = randint(20, 100)
gb_roll = randint(40, 100)
ub_roll = randint(60, 100)
mb_roll = 100
if message.content.startswith('?p'):
msg = f'A wild {random_mons} appeared!'.format(message)
await message.channel.send (msg)
if message.content.startswith('pb') and pokemon_roll>pb_roll:
await message.channel.send (f'{random_mons} broke out of pb, {pb_roll}, {pokemon_roll}')
elif message.content.startswith('pb') and pokemon_roll<pb_roll:
await message.channel.send (f'congrats, you caught {random_mons} with pb, {pb_roll},
{pokemon_roll}')
或者,您需要定义两个函数,一个控制口袋妖怪选择的函数,另一个负责捕获的函数。
此外,您可能需要定义 pokemon_roll==pb_roll
时会发生什么,因为当前未捕获到。