在discord.py 1.0.1(仅Repl.it拥有的版本)中,齿轮使我很难受。
import discord
from discord.ext import commands
class Coding(commands, Cog):
def __init__(self, client):
self.client = client
@commands.Cog.listener()
async def on_ready(self):
print("Kahoot Bot 0.1 ALPHA")
client.remove_command("help")
@commands.command()
async def clear(self, ctx, amount = 5):
await ctx.channel.purge(limit = amount + 1)
@commands.command()
async def ping(self, ctx):
await ctx.send(f"Pong! {round(client.latency * 1000)}ms.")
@client.command(pass_context = True, aliases = ["print"])
async def printing(ctx, *, what_to_print):
await ctx.send(what_to_print)
print(what_to_print)
def setup(client):
client.add_cog(Coding(client))
错误的要点是: A)客户端未定义 B) init ()应该返回None,而不是协程
我尝试将所有代码更改为bot,然后再更改回客户端,但没有任何帮助。不知道发生了什么。
答案 0 :(得分:0)
您做继承错误。您不继承类:“命令”和“齿轮”。您从类“ commands.Cog”继承。因此,将class Coding(commands, Cog):
更改为class Coding(commands.Cog):
将解决一些错误。
您还犯了以下错误(“客户端不存在”错误):
@commands.Cog.listener()
async def on_ready(self):
print("Kahoot Bot 0.1 ALPHA")
client.remove_command("help") # this line
当我们要访问类变量时,在该变量的开头使用self.
表示我们正在使用该类变量。在这种情况下,您不使用self.client.
,而是使用client.
由于未在该函数中定义客户端,因此将给出错误。但是它被定义为类变量(“ init”函数)。要访问它,请使用:self.client.