Выберите меню после кнопки discord.pyPython

Программы на Python
Anonymous
Выберите меню после кнопки discord.py

Сообщение Anonymous »

Я разрабатываю бота для Discord, используя discord.py. В этом блоке кода я пытаюсь открыть меню выбора после нажатия кнопки. Он должен просмотреть все доступные элементы в CSV-файле (элемент доступен, если row[1] == '') и вернуть их, а затем поместить все доступные элементы в меню выбора и позволить пользователю выбрать их. Я пробовал много способов, но не понял, как это сделать.
Кроме того, после выбора элемента он должен записать имя пользователя в дискорде в файл csv. Буду признателен за помощь.
import discord
from discord import ui
from discord.ext import commands
import os
import csv
from dotenv import load_dotenv
load_dotenv('config.env')

client = commands.Bot(command_prefix='!', intents=discord.Intents.all())

@client.command()
async def item(ctx):
view = ItemButtonMenu()
await ctx.send("Choose an item:", view=view)

class ItemButtonMenu(ui.View):
available_items = []
def __init__ (self, *, timeout=None):
self.available_items = []
super().__init__(timeout=timeout)

@ui.button(label = 'Take item', custom_id = 'take_item', style = discord.ButtonStyle.green)
async def take_item(self, interaction: discord.Interaction, button: ui.Button):
with open('items.csv', 'r') as csvfile:
csvreader = csv.reader(csvfile)
next(csvreader)
self.available_items = [row[0] for row in csvreader if row[1] == '']
guild_id = int(os.getenv('GUILD_ID'))
channel = client.get_channel(ID_OF_CHANNEL) #deleted id of there, but in my code it's alright
view = ItemSelectMenu()
await channel.send(view=view, ephemeral=True)

class ItemSelectMenu(ui.View):
options = [discord.SelectOption(label=item) for item in ItemButtonMenu.available_items]
@ui.select(placeholder='Choose an item', options=options)
async def item_select(self, select: ui.Select, interaction: discord.Interaction):
pass
token: str = os.getenv('TOKEN')
client.run(token)


Подробнее здесь: https://stackoverflow.com/questions/787 ... discord-py

Вернуться в «Python»