Отправка selectmenu в канал без команды
Столкнулся с проблемой, что после определённого отрезка времени выдаёт ошибку взаимодействия. Нужно как-то сделать так, чтобы selectmenu можно было пользоваться всегда и не нужно было постоянно отправлять команду ($faq в моём случае) в канал.
сам код:
import discord
from discord.ext import commands
from discord.ui import View
class Dropdown(discord.ui.Select):
def __init__(self):
options = [
discord.SelectOption(
label='Вопрос1',
emoji='<:1_:1061684102794850305>'),
discord.SelectOption(
label='Вопрос2',
emoji='<:2_:1061684134126289016>'),
discord.SelectOption(
label='Вопрос3',
emoji='<:3_:1061684130833764522>'),
discord.SelectOption(
label='Вопрос4',
emoji='<:4_:1061684126010322984>'),
discord.SelectOption(
label='Вопрос5',
emoji='<:5_:1061684123950919690>'),
discord.SelectOption(
label='Вопрос6',
emoji='<:6_:1061684119957950527>'),
discord.SelectOption(
label='Вопрос7',
emoji='<:7_:1061684116896096296>'),
discord.SelectOption(
label='Вопрос8',
emoji='<:8_:1061684115054796880>'),
discord.SelectOption(
label='Вопрос9',
emoji='<:9_:1061684111783231518>'),
discord.SelectOption(
label='Вопрос10',
emoji='<:10:1061684108079661107>'),
discord.SelectOption(
label='Вопрос11',
emoji='<:11:1061684106095767627>'),
]
super().__init__(placeholder='Ответы на часто задаваемые вопросы', min_values=1, max_values=1, options=options)
async def callback(self, interaction: discord.Interaction):
if self.values[0] == 'Вопрос1':
await interaction.response.send_message(
content='ответ1',
ephemeral=True)
if self.values[0] == 'Вопрос2':
await interaction.response.send_message(
content='ответ2',
ephemeral=True)
if self.values[0] == 'Вопрос3':
await interaction.response.send_message(
content='ответ3',
ephemeral=True)
if self.values[0] == 'Вопрос4':
await interaction.response.send_message(
content='ответ4',
ephemeral=True)
if self.values[0] == 'Вопрос5':
await interaction.response.send_message(
content='ответ5',
ephemeral=True)
if self.values[0] == 'Вопрос6':
await interaction.response.send_message(
content='ответ6',
ephemeral=True)
if self.values[0] == 'Вопрос7':
await interaction.response.send_message(
content='ответ7',
ephemeral=True)
if self.values[0] == 'Вопрос8':
await interaction.response.send_message(
content='ответ8',
ephemeral=True)
if self.values[0] == 'Вопрос9':
await interaction.response.send_message(
content='ответ9',
ephemeral=True)
if self.values[0] == 'Вопрос10':
await interaction.response.send_message(
content='ответ10',
ephemeral=True)
if self.values[0] == 'Вопрос11':
await interaction.response.send_message(
content='ответ11',
ephemeral=True)
class DropdownView(discord.ui.View):
def __init__(self):
super().__init__()
self.add_item(Dropdown())
class Bot(commands.Bot):
def __init__(self):
intents = discord.Intents.default()
intents.message_content = True
super().__init__(command_prefix=commands.when_mentioned_or('$'), intents=intents)
async def on_ready(self):
print(f'Работает - {self.user} (ID: {self.user.id})')
print('------')
bot = Bot()
@bot.command()
async def faq(ctx, member:discord.Member = None):
if member == None:
member = ctx.author
embed = discord.Embed(title="Вопрос-Ответы!", description="Вы можете получить ответы на интересующие Вас вопросы. Выберите в всплывающем меню вопрос и тут же получите ответ на него!")
embed.set_footer(text=f"Вопрос-ответы будут добавляться по мере необходимости")
view = DropdownView()
await ctx.send(embed=embed, view=view)
bot.run('...')
Источник: Stack Overflow на русском