import disnake from disnake . ext import commands from disnake import TextInputStyle class modal ( disnake . ui . Modal ) : def __init__ ( self ) : components = [ disnake . ui . TextInput ( label = "Предложение" , placeholder = "Введите предложение для сервера или бота" , custom_id = "sentences" , style = TextInputStyle . short , max_length = 200 ) ] super ( ) . __init__ ( title = "Предложение для сервера или бота" , components = components ) class sentences ( commands . Cog ) : def __init__ ( self , bot ) : self . bot = bot @commands.Cog.listener ( ) async def on_ready ( self ) : guild = self . bot . get_guild ( . . . ) # Замените на ID вашего сервера channel = guild . get_channel ( . . . ) # Замените на ID канала, где будете ставить реакцию view = disnake . ui . View ( ) view . add_item ( disnake . ui . Button ( emoji = "📨" , style = disnake . ButtonStyle . blurple , custom_id = "create" ) ) embed = disnake . Embed ( title = "Предложение для сервера или бота" , description = "**Здесь вы можете отправить предложение для сервера или бота**\n**Нажмите на кнопку ниже, и в модальном окне напишите, что хотите предложить нашему серверу или боту**" , color = 0xfcfcfc ) embed . add_field ( name = "**Примечание**" , value = "**Если ваше предложение нам не понравится, то вас не предупреждат об этом**" , inline = False ) embed . set_thumbnail ( url = "https://media.discordapp.net/attachments/1210442042086391839/1219165968635531264/006bc40bbc6f16d1f724409df7e7e098.jpg?ex=660a4fc9&is=65f7dac9&hm=8f62a37084947bd393aa340de6eb47a64fb8ef007b6c6ed582cb6fdfb947ed76&=&format=webp&width=602&height=602" ) embed . set_image ( url = "https://media.discordapp.net/attachments/1210442042086391839/1219166669742669904/4f1aa325c25974327016cfbe098b8637.jpg?ex=660a5071&is=65f7db71&hm=92fdc14ad94f487349d973bc7cb40310c100628229d06577965b6886903744f9&=&format=webp&width=703&height=396" ) embed . set_footer ( text = "В течении двух недель ваше предложение будет рассмотрено и возможно будет добавлено в бота или на сервер" ) await channel . send ( embed = embed , view = view ) @commands.Cog.listener ( ) async def on_button_click ( self , inter : disnake . MessageInteraction ) : if inter . data . custom_id == "create" : await inter . response . send_modal ( modal = modal ( ) ) async def callback ( self , inter : disnake . ModalInteraction ) - > None : await inter . send ( "**Ваше предложение было отправлено, и будет рассмотрено в ближайшее время!**" ) channel = self . bot . get_channel ( 1218817686373404722 ) embed = disnake . Embed ( title = "Предложение для сервера или бота" , description = f"Предложение от{inter.author.mention}" , color = 0x54b9f7 ) for key , value in inter . text_values . items ( ) : embed . add_field ( name = key , value = value , inline = False ) await channel . send ( embed = embed ) def setup ( bot ) : bot . add_cog ( sentences ( bot ) )