本文介绍了@bot.event 在一个 cog discord.py的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想知道是否可以使用@bot.event在 discord.py 的 cog 中.我试过做
I was wondering if it is possible to use @bot.eventin a cog for discord.py. I have tried doing
@self.bot.event
async def on_member_join(self, ctx, member):
channel = discord.utils.get(member.guild.channels, name='general')
await channel.send("hello")
在我的 cog 类中,但出现错误
in my cog class, but I get the error
NameError: name 'self' is not defined
即使我在 __init __ 中定义了 self.bot.
even though I define self.bot in my __init __.
是否有不同的方式在 cogs 中执行 bot.event,或者它是不可能的?
Is there a different way of doing bot.event in cogs, or is it just not possible?
推荐答案
从 new-style cog,你必须使用 commands.Cog.listener
装饰器.以下是 mental 转换为新样式的示例:
To register an event from a new-style cog, you must use the commands.Cog.listener
decorator. Below is mental's example converted to the new style:
from discord.ext import commands
class Events(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_ready(self):
print('Ready!')
print('Logged in as ---->', self.bot.user)
print('ID:', self.bot.user.id)
@commands.Cog.listener()
async def on_message(self, message):
print(message)
def setup(bot):
bot.add_cog(Events(bot))
这篇关于@bot.event 在一个 cog discord.py的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!