我想随机打印函数的内容我收到消息:
<coroutine object process_start_command.<locals>.x at 0x0000024E0D550240>
程序:
import random
import randomfun
@dp.message_handler(commands=['start'])
async def process_start_command(message: types.Message):
async def x():
if True:
f = [randomfun.ran_fun1, randomfun.ran_fun2]
rand_x = random.choice(f)
rand_x()
await message.answer(f"{x}")
随机有趣文件:
from aiogram import types
async def ran_fun1(message: types.Message):
await message.answer(text='Это рандомное сообщение 1')
async def ran_fun2(message: types.Message):
await message.answer(text='Это рандомное сообщение 2')
我真的很困惑,我显然在喊出一些错误的东西。
我们将逐步修复它。
对于初学者来说,您有一个嵌套函数 x,但您不调用它,而是将其作为消息输出。要调用函数,需要添加括号:
x()。因为 该函数是异步的,那么你需要添加await. 如果函数返回消息的文本,则可以这样写:或者更简单:
因为 您的函数不会返回任何内容,而是尝试调用内部的函数,该函数本身会发送消息,那么您只需像 那样调用它即可
await x()。接下来,您有
rand_x一个异步函数,需要将其作为异步函数调用(使用await)。在这种情况下,列表中的所有函数都需要一个参数message;调用时必须传递该参数。总的来说,调用随机函数应该如下所示:整个事情会是这样的:
如果我们删除无意义的函数嵌套和无意义的检查
True,它将如下所示:如果你的函数除了显示消息之外什么都不做,那么存储消息列表而不是函数列表会更容易: