Discord 역할 명령
봇이 역할을 제어합니다!
Discord 서버의 다른 구성원에게 역할을 부여(및 제거)할 수 있는 기능을 봇에 부여할 시간입니다. 이것은 기능 모음으로서 다른 장부처럼 작동하고 해당 기능에서 명령을 생성합니다.
먼저 구성원이 가지고 있는 권한을 확인하기 위해 먼저 사용하도록 하는 명령을 빌드합니다. 이것은 두 가지 중 하나를 반환합니다. 첫 번째는 사용자에게 관리자 권한이 있는지 확인하는 것입니다. 이것은 처음에는 유용하지 않은 것처럼 보일 수 있지만 권한 목록을 제공하는 명령에 대한 오류 catch인 다음 명령을 제공합니다.
# './cogs/Roles.py
import nextcord
from nextcord.ext.commands.core import has_permissions, CheckFailure
from nextcord.utils import get
from nextcord.ext import commands
class Roles(commands.Cog):
def __init__(self, client):
self.client = client
# Check if user has admin role
@commands.command()
@has_permissions(administrator=True)
async def permCheck(self, ctx):
await ctx.send("You're an Admin!")
# Catch error to provide listed permissions for the user
@permCheck.error
async def permCheckError(self, ctx, error):
authorPerm = ctx.author.guild_permissions
if isinstance(error, CheckFailure):
await ctx.send(
f'You have access to there permissions below:' +
f"Manage Messages: {authorPerm.manage_messages}\n" +
f"Manage Roles: {authorPerm.manage_roles}\n" +
f"Mute Members: {authorPerm.mute_members}\n" +
f"Deafen Members: {authorPerm.deafen_members}\n" +
f"Move Members: {authorPerm.move_members}\n" +
f"Ban Members: {authorPerm.ban_members}\n"
)
def setup(client):
client.add_cog(Roles(client))
그런 다음 몇 가지 기능을 더 추가합니다. 하나는 사용자(또는 언급된 사용자)에게 그들의 최상위 역할이 무엇인지 알려주고, 다른 하나는 역할을 부여/제거할 수 있는
manage_roles
권한이 있는 사용자를 위한 것입니다.# Top Role Command
@commands.command(brief = "Shows a user's top role")
async def topRole(self, ctx, user: nextcord.Member=None):
if user is None:
user = ctx.author
await ctx.send(f"{user.name} has {user.top_role} as the top role")
# Role Command
@commands.command()
@has_permissions(manage_roles = True)
async def role(self, ctx, user: nextcord.Member, role: nextcord.Role):
try:
if role not in user.roles:
await user.add_roles(role)
await ctx.send(f'{user.mention} now has the {role} role')
else:
await user.remove_roles(role)
await ctx.send(f'{user.mention} no longer has the {role} role')
except:
await ctx.send(f'Tried to find {role}.\n Please make sure you can mention the role from the right channel {ctx.author}')
finally:
print('EOL for Role command\n')
마지막 명령은 관리자 권한을 갖고자 하는 스텔스 서버 모드를 위한 것입니다.
@commands.command(hidden = True)
@has_permissions(manage_roles = True)
async def admin(self, ctx):
user = ctx.author
adminID = <admin-id-here>
admin = get(ctx.guild.roles, id = adminID)
if admin not in user.roles:
await user.add_roles(admin)
else:
await user.remove_roles(admin)
이 트릭을 사용하여 호출할 필요 없이 다른 특수 역할을 부여할 수도 있습니다
!role @some-user @some-role
.
Reference
이 문제에 관하여(Discord 역할 명령), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/swislokdev/discord-role-commands-7p6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)