在on_message函数外部调用时,变量无法在函数内部引用

时间:2018-08-24 23:24:38

标签: python discord discord.py discord.py-rewrite

我正在尝试创建一个名为“ saynum”的代码,该代码的参数为amount(这是自然数。)该命令的工作方式是自运行该命令以来计算消息数并发送号码不一致。我有一个障碍。尝试运行async def on_message(message)(当然是@ bot.event)并在其之外调用变量时,我无法从on_message函数外部引用该变量。有没有解决方法?这个问题可能会被否决。

如果没有解决方法,那么该命令是否可能起作用?我不知道如何以另一种方式来处理它。

这是我正在使用的代码:

import discord
from discord.ext import commands
import random
import sys
import traceback


Client = discord.Client()
client = commands.Bot(command_prefix='~', case_insensitive=True)
client.remove_command("help")

@client.command()
async def saynum(ctx, amount):
    num = 0
    if amount.isdigit():
        if int(amount) < 1:
            await ctx.send("Please put an integer greater than 1.")
        else:
    @client.event
    async def on_message(message):
        num += 1
        await ctx.send(num)

哦,最后一件事。我的python版本是3.6.6,如果您不知道,我正在使用discord.py重写。

1 个答案:

答案 0 :(得分:0)

在行num += 1上放nonlocal num
这使python知道了变量的范围(在这种情况下为外部)