Skip to content

Instantly share code, notes, and snippets.

@Malarne
Created November 27, 2022 15:21
Show Gist options
  • Save Malarne/d1eb8ee38345d4b46bdd747ff38fcf09 to your computer and use it in GitHub Desktop.
Save Malarne/d1eb8ee38345d4b46bdd747ff38fcf09 to your computer and use it in GitHub Desktop.
import discord
from redbot.core import commands, checks
import random
class ArticlesButton(discord.ui.Button["Articles"]):
def __init__(self):
super().__init__(style=discord.ButtonStyle.secondary, label='Créer un article', custom_id="articles")
async def callback(self, interaction : discord.Interaction):
assert self.view is not None
view : discord.ui.View = ViewButtons
original_msg = interaction.message
category = original_msg.channel.category
user = interaction.user
overwrites = {
user: discord.PermissionOverwrite(read_messages = True, send_messages= True, manage_channels = True),
interaction.guild.default_role: discord.PermissionOverwrite(read_messages = False)
}
channel = await category.create_text_channel(str(user.name) + str(random.randint(1,5000)), overwrites=overwrites)
embed = original_msg.embeds[0]
embed.add_field(name= "Article:", value=interaction.user.mention + "\n" + channel.mention, inline=False)
await interaction.response.edit_message(embed=embed)
class TicketButton(discord.ui.Button["Tickets"]):
def __init__(self):
super().__init__(style=discord.ButtonStyle.secondary, label='Ouvrir un ticket', custom_id="tickets")
async def callback(self, interaction : discord.Interaction):
assert self.view is not None
view : discord.ui.View = ViewButtons
original_msg = interaction.message
category = discord.utils.get(interaction.guild.categories, id=1044997871998615552)
user = interaction.user
overwrites = {
user: discord.PermissionOverwrite(read_messages = True, send_messages= True),
interaction.guild.default_role: discord.PermissionOverwrite(read_messages = False)
}
channel = await category.create_text_channel(str(user.name) + str(random.randint(1,5000)), overwrites=overwrites)
await interaction.response.defer()
class RecrutButton(discord.ui.Button["Recrut"]):
def __init__(self):
super().__init__(style=discord.ButtonStyle.secondary, label='Postuler au Weazel', custom_id="recrut")
async def callback(self, interaction : discord.Interaction):
assert self.view is not None
view : discord.ui.View = ViewButtons
category = discord.utils.get(interaction.guild.categories, id=1044997805271433266)
user = interaction.user
overwrites = {
user: discord.PermissionOverwrite(read_messages = True, send_messages= True),
interaction.guild.default_role: discord.PermissionOverwrite(read_messages = False)
}
channel = await category.create_text_channel(str(user.name) + str(random.randint(1,5000)), overwrites=overwrites)
await interaction.response.defer()
class ViewButtons(discord.ui.View):
def __init__(self):
super().__init__(timeout=None)
self.add_item(ArticlesButton())
self.add_item(RecrutButton())
self.add_item(TicketButton())
class Weazelbot(commands.Cog):
def __init__(self, bot):
self.bot = bot
self.guild = None
self.chan_articles = None
self.chan_ticket = None
self.articles_msg = None
self.tickets_msg = None
self.loop = self.bot.loop.create_task(self.initialize())
async def initialize(self):
await self.bot.wait_until_ready()
guild_id = 1044697659480494101
articles_id = 1044980917380329543
ticket_id = 1044997558763790346
articles_msg_id = 1045005399142694952
tickets_msg_id = 1045005798973120583
self.guild = self.bot.get_guild(guild_id)
self.chan_articles = await self.guild.fetch_channel(articles_id)
self.chan_ticket = await self.guild.fetch_channel(ticket_id)
self.articles_msg = await self.chan_articles.fetch_message(articles_msg_id)
self.tickets_msg = await self.chan_ticket.fetch_message(tickets_msg_id)
# self.articles_msg = await self.articles_msg.edit(content="", view=None)
# self.tickets_msg = await self.tickets_msg.edit(content="", view=None)
# self.articles_msg = await self.articles_msg.edit(view=discord.ui.View().from_message(self.articles_msg).add_item(ArticlesButton()))
# try:
# self.tickets_msg = await self.tickets_msg.edit(view=discord.ui.View(timeout= None).from_message(self.tickets_msg).add_item(RecrutButton()))
# self.tickets_msg = await self.tickets_msg.edit(view=discord.ui.View(timeout= None).from_message(self.tickets_msg).add_item(TicketButton()))
# except:
# self.tickets_msg = await self.tickets_msg.edit(view=RecrutButton())
# self.tickets_msg = await self.tickets_msg.edit(view=discord.ui.View(timeout= None).from_message(self.tickets_msg).add_item(TicketButton()))
@commands.command()
@checks.mod()
async def clear_field(self, ctx, embed : str, index : int):
if embed.lower() == "articles":
await self.articles_msg.edit(embed=self.articles_msg.embeds[0].remove_field(index=index))
if embed.lower() == "tickets":
await self.tickets_msg.edit(embed=self.tickets_msg.embeds[0].remove_field(index=index))
await ctx.send("Done.")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment