Переменная при вызове вне функции on_message не может быть указана внутри функции - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь создать код под названием «saynum» с параметром количества (которое является натуральным числом.) Команда должна работать так, как она подсчитывает количество сообщений с момента ее запуска, и отправляет номер на раздор. У меня есть блок, хотя. При попытке запустить 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 голосов
/ 25 августа 2018

над линией num += 1 поставить nonlocal num
Это позволяет python знать область действия вашей переменной (в данном случае внешнюю)

...