首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个不同类别的自动角色,但只有fleet2角色才能工作

两个不同类别的自动角色,但只有fleet2角色才能工作
EN

Stack Overflow用户
提问于 2022-08-03 20:58:54
回答 1查看 21关注 0票数 -1

我有两个自动角色。fleet1角色-当用户加入"fleet1类别vc's“fleet2角色时分配给用户,当用户加入”fleet2分类vc's“时分配给用户。只有fleet2角色在成员加入fleet2类别时才被分配给他们。fleet1不起作用。有人知道解决方案吗?

代码语言:javascript
复制
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))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-03 22:15:35

您已经重写了该方法,因此只有第二个方法起作用。

就像这样:

代码语言:javascript
复制
>>> 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

代码语言:javascript
复制
    @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):
        ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73227734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档