명령에 버튼을 추가하는 방법 [interactions.py]
고지 사항: 이 게시물에 대한 새 샘플 파일을 생성하지만 원하는 경우 기본 파일에 추가할 수 있습니다.
메인 라이브러리를 이미 가져왔다고 가정하고 클라이언트를 선언하고 이전 게시물에서 봇을 시작하면 만들기 버튼으로 바로 이동합니다.
단추
먼저 버튼에 대한 전역 변수를 생성해 보겠습니다.
button = interactions.Button(
style=interactions.ButtonStyle.PRIMARY,
label="Click me!",
custom_id="click_me",
)
interactions.Button
: 이 객체는 Discord API로 보낼 버튼을 형성합니다. style
: 버튼의 스타일입니다. 현재 Discord는 사용할 수 있는 다양한 스타일을 지원합니다. 아래 이미지에서 확인할 수 있습니다.label
: 버튼의 레이블입니다. 버튼에 표시되는 텍스트입니다. custom_id
: 누군가가 버튼을 클릭했을 때 받게 될 맞춤 ID입니다. 컴포넌트 콜백이 원하는 작업을 수행하려면 이것이 필요합니다. 이제 버튼이 있습니다. 다음은 무엇입니까? 물론 보내십시오.
@client.command(
name="button",
description="Send a button",
)
async def _button(ctx: interactions.CommandContext):
await ctx.send(components=button)
components=button
: components
는 메시지의 구성 요소를 구성하는 데 사용됩니다. 봇을 실행하고 명령을 사용하십시오. 이와 같은 내용이 표시되면 축하합니다. interaction.py로 버튼을 만들었지만 잠시만 기다려 주세요. 버튼을 클릭해도 아무 일도 일어나지 않고 "이 상호작용에 실패했습니다."라는 메시지가 표시됩니다.
그 이유는 아직 버튼 콜백을 추가하지 않았기 때문입니다. 버튼을 클릭하면
INTERACTIONS_CREATE
디스패치 게이트웨이 이벤트가 생성되며 해당 이벤트를 처리하려면 버튼 콜백이 필요합니다.@client.component("click_me")
async def _click_me(ctx: interactions.ComponentContext):
await ctx.send("Clicked!")
@client.component()
: 특별히 구성 요소 이벤트를 처리하는 데코레이터입니다. click_me
는 위에서 만든 custom_id
입니다. 이것이 할 일은 INTERACTIONS_CREATE
디스패치 게이트웨이 이벤트를 듣고 우리가 만든 custom_id
와 일치하는지 확인하는 것입니다. 이제 버튼, 명령 및 콜백 이벤트가 있으므로 봇을 다시 실행하고 테스트해 보겠습니다. 이와 같은 것이 있다면 축하합니다. interaction.py와 상호 작용할 수 있는 버튼으로 작동하는 명령을 만들면 됩니다.
작업 행
작업 행은 구성 요소를 행으로 구성하는 방법입니다. Discord에 따르면 메시지당 최대 5개의 작업 행을 가질 수 있으며 각 작업 행은 다른 작업 행을 포함할 수 없습니다.
Action Rows를 살펴보았으니 이제 interaction.py를 사용해 보겠습니다.
button =[
interactions.ActionRow(
components=[
interactions.Button(
style=interactions.ButtonStyle.PRIMARY,
label="Click me!",
custom_id="click_me",
),
interactions.Button(
style=interactions.ButtonStyle.DANGER,
label="Do not click!",
custom_id="do_not_click",
),
]
)
]
@client.command(
name="button",
description="Send a button",
)
async def _button(ctx: interactions.CommandContext):
await ctx.send(components=button)
@client.component("click_me")
async def click_me(ctx: interactions.ComponentContext):
await ctx.send("Clicked!")
@client.component("do_not_click")
async def do_not_click(ctx: interactions.ComponentContext):
await ctx.send("You clicked the wrong button!")
interactions.ActionRow()
: 이 개체는 작업 행을 만들어 Discord로 보내는 역할을 합니다. components
: Discord API로 보낼 Button
의 목록입니다. 위의 코드를 봇 파일에 복사한 후 봇을 실행하고 명령을 실행합니다. 이와 같은 내용이 표시된다면 축하합니다.
interaction.py 및 라이브러리를 활용하는 방법에 대한 향후 게시물을 계속 지켜봐 주시기 바랍니다. 이 게시물이 마음에 드셨다면 하트를 꼭 눌러주세요. 질문이 있으시면 의견 섹션에 알려주십시오. 또는 공식interactions.py Discord server에 가입하여 추가 도움을 받을 수 있습니다.
Reference
이 문제에 관하여(명령에 버튼을 추가하는 방법 [interactions.py]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jimmyblue/how-to-add-buttons-to-your-command-interactionspy-1jdh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)