fix(issues): added proper handling for if a string is longer than 1024 characters
Some checks reported warnings
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled

This commit is contained in:
Seaswimmer 2023-08-19 16:54:55 -04:00
parent ff1b942d8c
commit 854935da7e
No known key found for this signature in database
GPG key ID: 5019678FD9CF50D8

View file

@ -1,6 +1,9 @@
import asyncio
import aiohttp
import discord import discord
from discord.interactions import Interaction from discord.interactions import Interaction
from redbot.core import Config, app_commands, commands from redbot.core import Config, app_commands, commands, checks
class Issues(commands.Cog): class Issues(commands.Cog):
"""This cog allows you to create Gitea issues through a Discord modal. """This cog allows you to create Gitea issues through a Discord modal.
@ -16,6 +19,7 @@ class Issues(commands.Cog):
) )
@commands.command() @commands.command()
@checks.is_owner()
async def issuesconfig(self, ctx: commands.Context, channel: discord.TextChannel = None): async def issuesconfig(self, ctx: commands.Context, channel: discord.TextChannel = None):
if channel: if channel:
await self.config.request_channel.set(channel.id) await self.config.request_channel.set(channel.id)
@ -107,12 +111,18 @@ class Issues(commands.Cog):
title = item.label title = item.label
value = item.value value = item.value
if value is not None: if value is not None:
if len(value) > 1024:
split_value = [value[i:i+1024] for i in range(0, len(value), 1024)]
for i, part in enumerate(split_value):
embed.add_field(name=title if i == 0 else "\u200b", value=part, inline=False)
else:
embed.add_field(name=title, value=value, inline=False) embed.add_field(name=title, value=value, inline=False)
if interaction.user.discriminator == '0': if interaction.user.discriminator == '0':
username = interaction.user.name username = interaction.user.name
else: else:
username = f"{interaction.user.name}#{interaction.user.discriminator}" username = f"{interaction.user.name}#{interaction.user.discriminator}"
embed.set_footer(text=f"Submitted by {username} ({interaction.user.id})", icon_url=interaction.user.display_avatar.url) embed.set_footer(text=f"Submitted by {username} ({interaction.user.id})", icon_url=interaction.user.display_avatar.url)
embed.set_author(name="Bot Bug Report")
await self.cog_instance.submit_issue_request(interaction=interaction, original_interaction=self.original_interaction, embed=embed) await self.cog_instance.submit_issue_request(interaction=interaction, original_interaction=self.original_interaction, embed=embed)
class IssueConfigurationButton(discord.ui.View): class IssueConfigurationButton(discord.ui.View):
@ -185,6 +195,8 @@ class Issues(commands.Cog):
async def on_submit(self,interaction: discord.Interaction): async def on_submit(self,interaction: discord.Interaction):
message: discord.Message = await self.channel.fetch_message(self.message_id) message: discord.Message = await self.channel.fetch_message(self.message_id)
embed = message.embeds[0] embed = message.embeds[0]
field_values = []
field_names = []
if self.approved: if self.approved:
embed.color = 1226519 embed.color = 1226519
embed.title = "Issue Request Approved" embed.title = "Issue Request Approved"
@ -195,5 +207,9 @@ class Issues(commands.Cog):
await interaction.response.send_message(content="Issue request denied.", ephemeral=True) await interaction.response.send_message(content="Issue request denied.", ephemeral=True)
if self.response.value is not None: if self.response.value is not None:
embed.add_field(name=f"Response from {interaction.user.name}", value=self.response.value, inline=False) embed.add_field(name=f"Response from {interaction.user.name}", value=self.response.value, inline=False)
for field in embed.fields:
if field.name != "\u200b":
field_names.append(field.name)
field_values.append(field.value)
await message.edit(embed=embed, view=None) await message.edit(embed=embed, view=None)
await self.user.send(embed=embed) await self.user.send(embed=embed)