問題描述
看到 this(消息組件)在 discord 的 API 參考中是否有任何方法可以使用 python 實現它?
I was wondering after seeing this (message components) on discord's API reference if there was any way to implement it using python ?
我嘗試創建一個 json 數組并將其傳遞到我的消息中,但無法使其工作.
I tried making a json array and passing it in my message but couldn't make it work.
我也嘗試查找 python 的參考,但找不到任何東西.
I also tried looking on the reference for python but couldn't find anything.
這是我的代碼
components= [
{
"type": 2,
"label": "Clear les kick",
"style": 4,
"custom_id": "clear_kick_button"
}
]
@slash.slash(name="kicked", description="Voir qui a été kick et combien de fois.", guild_ids=guild_id)
async def kicked(ctx):
await ctx.send("test", components= components)
如果你有任何信息謝謝你如果你分享它.
If you have any informations thank you if you share it.
推薦答案
新答案
Discord.py 2.0 允許使用按鈕和下拉菜單,盡管它不支持斜杠命令.請改用 Discord.py 2.0,但如果您需要斜線命令,請查看 discord_slash
.
升級到 Discord.py 2.0:
To upgrade to Discord.py 2.0:
窗戶:
pip install -U git+https://github.com/Rapptz/discord.py
MacOS 和 Linux:
MacOS and Linux:
pip3 install -U git+https://github.com/Rapptz/discord.py
舊答案:
(此答案已過時.)
到目前為止,您可以獲得一個名為 discord_components
的庫來使用按鈕.
要安裝這個庫,請使用 pip install --upgrade discord-components
(有時命令是 pip3 install --upgrade discord-components
).
Old Answer:
(This Answer is OUTDATED.)
As of right now, you can get a library called discord_components
to use buttons.
To install this library, use pip install --upgrade discord-components
(Sometimes the command would be pip3 install --upgrade discord-components
).
要導入 Discord 組件按鈕,請使用
To import Discord Component Buttons, use
from discord_components import DiscordComponents, Button, ButtonStyle, InteractionType
然后只需將這段代碼添加到機器人的 on_ready()
中:
Then just add this code in the bot's on_ready()
:
DiscordComponents(bot, change_discord_methods=True)
(確保將 bot
替換為您的機器人名稱,與 @something.command()
使用的名稱相同)
(Make sure to replace bot
with the name of your bot, the same one you use for @something.command()
)
要為消息添加按鈕,請執行以下操作:
To add a button to a message, do this:
await ctx.send(type=InteractionType.ChannelMessageWithSource, content="Message Here", components=[Button(style=ButtonStyle.URL, label="Example Invite Button", url="https://google.com"), Button(style=ButtonStyle.blue, label="Default Button", custom_id="button")])
(需要留言)
要在單擊按鈕時執行某些操作,您可以執行以下操作:
To do something when the button is clicked, you can do something like this:
@bot.event
async def on_button_click(interaction):
if interaction.component.label.startswith("Default Button"):
await interaction.respond(type=InteractionType.ChannelMessageWithSource, content='Button Clicked')
這種方法甚至可以在重新啟動后繼續存在!
This method even survives reboots!
如果您需要,我為您整理了一個示例:
Here's an example I put together for you if you need it:
import discord
from discord.ext import commands
from discord_components import DiscordComponents, Button, ButtonStyle, InteractionType
bot = commands.Bot(command_prefix=prefix, description="Desc", help_command=None)
@bot.event
async def on_ready():
DiscordComponents(bot, change_discord_methods=True)
await bot.change_presence(activity=discord.Game(name=f"{prefix}help"))
print("Bot has successfully logged in as: {}".format(bot.user))
print("Bot ID: {}
".format(bot.user.id))
@bot.command()
async def button(ctx):
await ctx.send(type=InteractionType.ChannelMessageWithSource, content="Message Here", components=[Button(style=ButtonStyle.URL, label="Example Invite Button", url="https://google.com"), Button(style=ButtonStyle.blue, label="Default Button", custom_id="button")])
bot.run("token")
希望對您有所幫助!
提示:如果您希望按鈕在一行中,請使用 [[]] 而不是僅使用 [] 例如:[[btn1, btn2],[btn3, btn4]] 將導致:
Tip: If you want the buttons to be in one row, use [[]] instead of just [] for Example: [[btn1, btn2],[btn3, btn4]] will result in:
[btn 1][btn 2]
[btn 3][btn 4]
額外提示:您也可以將變量設置為按鈕然后發送變量
Extra Tip: You can also set a variable as a button then send the variable
這篇關于將按鈕組件添加到消息(discord.py)的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!