started porting to disgo

This commit is contained in:
2024-04-04 01:27:59 +02:00
parent d952924b17
commit 8579328ee4
6 changed files with 254 additions and 258 deletions

118
tool.go
View File

@@ -9,7 +9,8 @@ import (
"strconv"
"strings"
"github.com/bwmarrin/discordgo"
"github.com/disgoorg/disgo/discord"
"github.com/disgoorg/snowflake/v2"
"github.com/sirupsen/logrus"
)
@@ -34,46 +35,40 @@ type MessageIDs struct {
ChannelID string
}
func jsonStringShowModal(interaction *discordgo.Interaction, manageID string, formID string, overwrite ...string) {
func jsonStringShowModal(userID string, manageID string, formID string, overwrite ...string) discord.InteractionResponse {
var modal ModalJson = getModalByFormID(formID)
var components []discordgo.MessageComponent
var components []discord.ContainerComponent
for index, component := range modal.Form {
var style discordgo.TextInputStyle = discordgo.TextInputShort
var style discord.TextInputStyle = discord.TextInputStyleShort
if component.IsParagraph {
style = discordgo.TextInputParagraph
style = discord.TextInputStyleParagraph
}
components = append(components, discordgo.ActionsRow{
Components: []discordgo.MessageComponent{
discordgo.TextInput{
CustomID: fmt.Sprint(index),
Label: component.Label,
Style: style,
Placeholder: component.Placeholder,
Required: component.Required,
MaxLength: component.MaxLength,
MinLength: component.MinLength,
Value: component.Value,
},
components = append(components, discord.ActionRowComponent{
discord.TextInputComponent{
CustomID: fmt.Sprint(index),
Label: component.Label,
Style: style,
Placeholder: component.Placeholder,
Required: component.Required,
MaxLength: component.MaxLength,
MinLength: &component.MinLength,
Value: component.Value,
},
})
}
if overwrite != nil && overwrite[0] != "" {
modal.Title = overwrite[0]
}
var err error
if modal.Title != "" && components != nil {
err = bot.InteractionRespond(interaction, &discordgo.InteractionResponse{
Type: discordgo.InteractionResponseModal,
Data: &discordgo.InteractionResponseData{
CustomID: manageID + ":" + interaction.Member.User.ID,
Title: modal.Title,
Components: components,
},
})
}
if err != nil {
logrus.Error(err)
return discord.InteractionResponse{
Type: discord.InteractionResponseTypeModal,
Data: &discord.ModalCreate{
CustomID: manageID + ":" + userID,
Title: modal.Title,
Components: components,
},
}
}
// Why does the golang compiler care about commands??
@@ -106,22 +101,21 @@ func getModalByFormID(formID string) ModalJson {
return modal
}
func getHighestRole(guildID string) (*discordgo.Role, error) {
botMember, err := bot.GuildMember(guildID, bot.State.User.ID)
func getHighestRole(guildID string) (*discord.Role, error) {
botmember, err := client.Rest().GetMember(snowflake.MustParse(guildID), app.Bot.ID)
if err != nil {
return nil, err
}
roles, err := bot.GuildRoles(guildID)
roles, err := client.Rest().GetRoles(snowflake.MustParse(guildID))
if err != nil {
return nil, err
}
var highestRole *discordgo.Role
for _, roleID := range botMember.Roles {
var highestRole *discord.Role
for _, roleID := range botmember.RoleIDs {
for _, role := range roles {
if role.ID == roleID {
if highestRole == nil || role.Position > highestRole.Position {
highestRole = role
highestRole = &role
}
break
}
@@ -130,9 +124,7 @@ func getHighestRole(guildID string) (*discordgo.Role, error) {
return highestRole, nil
}
func int64Ptr(i int64) *int64 {
return &i
}
func ptr(s string) *string { return &s }
func hexToDecimal(hexColor string) int {
hexColor = strings.TrimPrefix(hexColor, "#")
@@ -173,59 +165,21 @@ func simpleGetFromAPI(key string, url string) interface{} {
return result[key]
}
func respond(interaction *discordgo.Interaction, content string, ephemeral bool) error {
var flag discordgo.MessageFlags
if ephemeral {
flag = discordgo.MessageFlagsEphemeral
}
err := bot.InteractionRespond(interaction, &discordgo.InteractionResponse{
Type: discordgo.InteractionResponseChannelMessageWithSource,
Data: &discordgo.InteractionResponseData{
Content: content,
Flags: flag,
},
})
if err != nil {
return err
}
return nil
}
func respondEmbed(interaction *discordgo.Interaction, embed discordgo.MessageEmbed, ephemeral bool) error {
var flag discordgo.MessageFlags
if ephemeral {
flag = discordgo.MessageFlagsEphemeral
}
err := bot.InteractionRespond(interaction, &discordgo.InteractionResponse{
Type: discordgo.InteractionResponseChannelMessageWithSource,
Data: &discordgo.InteractionResponseData{
Flags: flag,
Embeds: []*discordgo.MessageEmbed{
&embed,
},
},
})
if err != nil {
return err
}
return nil
}
func findAndDeleteUnusedMessages() {
for _, message := range getAllSavedMessages() {
_, err := bot.ChannelMessage(message.ChannelID, message.ID)
_, err := client.Rest().GetMessage(snowflake.MustParse(message.ChannelID), snowflake.MustParse(message.ID))
if err != nil {
tryDeleteUnusedMessage(message.ID)
}
}
}
func isIDRole(guildID, id string) bool {
_, err1 := bot.GuildMember(guildID, id)
func isIDRole(guildID snowflake.ID, id snowflake.ID) bool {
_, err1 := client.Rest().GetMember(guildID, id)
if err1 == nil {
return false
}
roles, err2 := bot.GuildRoles(guildID)
roles, err2 := client.Rest().GetRoles(guildID)
if err2 == nil {
for _, role := range roles {
if role.ID == id {