齿轮已加载,但功能不起作用(discord.py)
Posted
技术标签:
【中文标题】齿轮已加载,但功能不起作用(discord.py)【英文标题】:Cogs are loaded but the functions don't work (discord.py) 【发布时间】:2020-04-14 22:23:43 【问题描述】:我有一个问题。我正在用“Discord.py”写一个不和谐的机器人。我在“Raspberry Pi 3B”上使用“Python 3.8.1”。
我的主文件中有一个“加载”和一个“卸载”功能。他们做他们应该做的工作。 但我有 Cogs,例如最简单的一个:“ping”。 我可以加载“ping”,但该命令不起作用(在每个 Cog 中): "忽略命令中的异常无: discord.ext.commands.errors.CommandNotFound:找不到命令“ping””
我不知道问题可能出在哪里。根据其他人的说法,该准则似乎是正确的。我在上面观看了 YouTube 视频,但没有答案... 我将尝试使用另一个 python 版本,例如“3.7.x”...
我的 bot.py:
import discord
from discord.ext import commands
import os
client = commands.Bot(command_prefix = "/")
@client.event
async def on_ready():
print(f'\n\nBot is ready!\nName: client.user.name\nID: client.user.id\n ---------\n')
return
@client.command()
async def load(ctx, extension):
client.load_extension(f'cogs.extension') #loads the extension in the "cogs" folder
await ctx.send(f'Loaded "extension"')
print(f'Loaded "extension"')
return
@client.command()
async def unload(ctx, extension):
client.unload_extension(f'cogs.extension') #unloads the extension in the "cogs" folder
await ctx.send(f'Unloaded "extension"')
print(f'Unoaded "extension"')
return
print('\n')
for filename in os.listdir('./cogs'): #loads all files (*.py)
if filename.endswith('.py'):
client.load_extension(f'cogs.filename[:-3]') #loads the file without ".py" for example: cogs.ping
print(f'Loaded filename[:-3]')
client.run('MY TOKEN')
我的 ping.py:
import discord
from discord.ext import commands
class Ping(commands.Cog):
def __init__(self, client):
self.client = client
@commands.command()
async def ping(self, ctx):
await ctx.send(f'pong!\nround(client.latency * 1000)ms')
return
def setup(client):
client.add_cog(Ping(client))
你有没有发现什么错误??
【问题讨论】:
【参考方案1】:您必须将函数 ping
放在类的范围内,而不是在构造函数内。
import discord
from discord.ext import commands
class Ping(commands.Cog):
def __init__(self, client):
self.client = client
@commands.command()
async def ping(self, ctx): # This was inside '__init__' before
await ctx.send(f'pong!\nround(self.client.latency * 1000)ms')
return
def setup(client):
client.add_cog(Ping(client))
【讨论】:
成功了!但我不得不写await ctx.send(f'pong!\nround(self.client.latency * 1000)ms')
...以上是关于齿轮已加载,但功能不起作用(discord.py)的主要内容,如果未能解决你的问题,请参考以下文章
voice_client 和 url 突然在 discord.py 机器人中不起作用
与 on_message 事件有关的 Discord py Cog 问题,不起作用