我有两个自动角色。fleet1角色-当用户加入"fleet1类别vc's“fleet2角色时分配给用户,当用户加入”fleet2分类vc's“时分配给用户。只有fleet2角色在成员加入fleet2类别时才被分配给他们。fleet1不起作用。有人知道解决方案吗?
import discord
import config
from discord.ext import commands
class VoiceUpdate(commands.Cog):
def __init__(self, bot: commands.Bot):
self.bot = bot
@commands.Cog.listener()
async def on_voice_state_update(self, member: discord.Member, before, after):
role = member.guild.get_role(config.FLEET1_ROLE)
channels = [config.FLEET_1_ID, config.FLEET_2_ID, config.FLEET_3_ID,
config.FLEET_4_ID, config.FLEET_5_ID]
for chnl in channels:
channel = member.guild.get_channel(chnl)
if member in channel.members:
await member.add_roles(role)
return
else:
await member.remove_roles(role)
@commands.Cog.listener()
async def on_voice_state_update(self, member: discord.Member, before, after):
role = member.guild.get_role(config.FLEET2_ROLE)
channels = [config.FLEET_6_ID, config.FLEET_7_ID, config.FLEET_8_ID,
config.FLEET_9_ID, config.FLEET_10_ID]
for chnl in channels:
channel = member.guild.get_channel(chnl)
if member in channel.members:
await member.add_roles(role)
return
else:
await member.remove_roles(role)
async def setup(bot: commands.Bot) -> None:
await bot.add_cog(
VoiceUpdate(bot))发布于 2022-08-03 22:15:35
您已经重写了该方法,因此只有第二个方法起作用。
就像这样:
>>> class MyClass:
... def method(self):
... return 'first method was called'
... def method(self):
... return 'second method was called'
...
>>> a = MyClass()
>>> a.method()
'second method was called'您需要给它们命名不同的东西,以便让它们都注册。listener
@commands.Cog.listener('on_voice_state_update')
async def voice_update_1(self, member: discord.Member, before, after):
...
@commands.Cog.listener('on_voice_state_update')
async def voice_update_2(self, member: discord.Member, before, after):
...https://stackoverflow.com/questions/73227734
复制相似问题