Я создаю диск-бот с помощью discord.py и мне интересно, почему моя переменная client
не работает. Я знаю, что это как-то связано с глобальными переменными, но я не могу заставить его работать. У меня есть два сценария, которые связаны через что-то, что я думаю, называется «винтики». Вот мой первый скрипт (основной).
import discord
import os
from discord.ext import commands
token = # For obvious reasons not shown
client = commands.Bot(command_prefix = "!")
@client.command()
async def load(ctx, extention):
client.load_extension(f'cogs.{extention}')
@client.command()
async def unload(ctx, extention):
client.unload_extension(f'cogs.{extention}')
@client.command()
async def reload(ctx, extention):
client.unload_extension(f'cogs.{extention}')
client.load_extension(f'cogs.{extention}')
for filename in os.listdir('./cogs'):
if filename.endswith('.py'):
client.load_extension(f'cogs.{filename[:-3]}')
client.run(token)
Все отлично работает, когда дело доходит до этого скрипта, но когда дело доходит до моего второго скрипта, что-то не так.
import discord
from discord.ext import commands
import time as t
import random
class Coinflip(commands.Cog):
def __init__(self, client):
self.client = client
@commands.command(aliases=['coinflip'])
async def cf(self, ctx, cfChoice: str):
# Randomize and set choice to upper case letters
cfChoice = cfChoice.upper()
cfResults = random.choice(['RED', 'BLUE'])
# Get the user who sent the message
user = client.get_user(ctx.message.author.id)
t.sleep(1)
if cfChoice == 'RED' or cfChoice == 'BLUE':
# WIN
if cfChoice == cfResults:
# Send result in the channel
await ctx.send(f'It is {cfResults.lower()}!')
# Send a DM to the person
await user.send('You won on coinflip! Well done.')
# LOST
elif cfChoice != cfResults:
# Send result in the channel
await ctx.send(f'It is {cfResults.lower()}!')
# Send a DM to the person
await user.send('You lost on coinflip! Good luck next time.')
# NOT VALID CHOICE
else:
# Send a DM to the person
await user.send(f'"{cfChoice.lower()}" is not valid! Try again! [red/blue]')
def setup(client):
client.add_cog(Coinflip(client))
Переменная client
отлично работает везде, кроме user = client.get_user(ctx.message.author.id)
. Это говорит о «неопределенной переменной« клиент »». Спасибо за вашу помощь.