Тугмаҳо
Бо матн навиштани ҷавобҳо суст аст. Дар discord.py дар зери паём тугмаҳо гузоштан мумкин — ва пахшҳоро мустақиман дар код коркард кардан.
View ва тугмаҳо
class VoteView(discord.ui.View):
def __init__(self):
super().__init__(timeout=180) # баъди 180 сония тугмаҳо кор намекунанд
self.votes = {}
@discord.ui.button(label="Ҳа", style=discord.ButtonStyle.success)
async def yes(self, interaction: discord.Interaction, button: discord.ui.Button):
await interaction.response.send_message("Овоз қабул шуд", ephemeral=True)
await message.channel.send("Боз як давр бозӣ кунем?", view=VoteView())
- View — маҷмӯи унсурҳо дар зери паём ва коркардкунандаҳои онҳо; ҳар паём объекти View-и худро бо маълумоти худ (
self.votes) дорад; @discord.ui.button(label=…, style=…)методро ба тугма табдил медиҳад; услубҳо —primary(кабуд),success(сабз),danger(сурх),secondary(хокистарӣ);- метод interaction — пахшро мегирад:
interaction.user— кӣ пахш кард,interaction.response— чӣ тавр ҷавоб додан.
Ҷавоб ба пахш
Ба ҳар пахш маҳз як бор ҷавоб додан лозим:
await interaction.response.send_message("Матн") # паёми нав
await interaction.response.send_message("Танҳо ба шумо", ephemeral=True) # танҳо пахшкунанда мебинад
await interaction.response.edit_message(content="Матни нав", view=self) # паёмро бо тугмаҳо иваз кардан
Агар дар 3 сония ҷавоб надиҳед, Discord ба корбар «Хатои ҳамкорӣ» нишон медиҳад.
Иваз кардани тугмаҳо
button.label = "Пахш шуд: 5"
button.disabled = True
for item in self.children: # ҳамаи унсурҳои View
item.disabled = True
await interaction.response.edit_message(view=self)
Тағйирот танҳо баъди edit_message(view=self) ба корбарон намоён мешавад. Аввал тугмаҳоро иваз кунед, баъд паёмро нав кунед. self.stop() View-ро анҷом медиҳад — вай дигар пахшҳоро интизор намешавад.
Тугмаҳо дар давра
Агар вариантҳо пешакӣ маълум набошанд (саволҳои викторина), тугмаҳоро дар давра месозанд:
for option in options:
button = discord.ui.Button(label=option)
button.callback = self.make_handler(button)
self.add_item(button)
Функсияи-корхонаи make_handler(button) коркардкунандаеро бармегардонад, ки тугмаи худро «дар хотир медорад».
Хулоса
discord.ui.View,@discord.ui.button(label, style),channel.send(…, view=…);interaction.user,interaction.response.send_message / edit_message,ephemeral=True;button.label,button.disabled,self.children, баъдedit_message(view=self);- тугмаҳо дар давра:
discord.ui.Button,callback,add_item.