started porting to disgo
This commit is contained in:
118
tool.go
118
tool.go
@@ -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 {
|
||||
|
Reference in New Issue
Block a user