diff --git a/bot/bot.go b/bot/bot.go index 6cdb125..819b928 100644 --- a/bot/bot.go +++ b/bot/bot.go @@ -44,6 +44,7 @@ func Run() { var conversationHistoryMap = make(map[string][]openai.ChatCompletionMessage) var sshConnections = make(map[string]*SSHConnection) + func hasAdminRole(roles []string) bool { for _, role := range roles { if role == AllowedUserID { @@ -129,6 +130,18 @@ func newMessage(discord *discordgo.Session, message *discordgo.MessageCreate) { // Store the SSH connection for later use sshConnections[message.Author.ID] = sshConn + // Save server information to PocketBase + serverInfo := &pb.ServerInfo{ + UserID: message.Author.ID, + ConnectionDetails: connectionDetails, + } + err = pb.CreateRecord("servers", serverInfo) + if err != nil { + log.Error(err) + discord.ChannelMessageSend(message.ChannelID, "Error saving server information.") + return + } + discord.ChannelMessageSend(message.ChannelID, "Connected to remote server!") } else { discord.ChannelMessageSend(message.ChannelID, "You are not authorized to use this command.") diff --git a/pb/pb.go b/pb/pb.go index 1066a5f..4241010 100644 --- a/pb/pb.go +++ b/pb/pb.go @@ -14,6 +14,11 @@ var ( once sync.Once ) +type ServerInfo struct { + UserID string + ConnectionDetails string +} + // Init initializes the PocketBase app func Init() { once.Do(func() { @@ -40,3 +45,32 @@ func GetRecordById(collectionID string, recordID string) (*models.Record, error) return record, nil } + +func CreateRecord(collectionName string, record *ServerInfo) error { + // Find the collection + collection, err := app.Dao().FindCollectionByNameOrId(collectionName) + if err != nil { + log.Error(err) + return err + } + + // Create a new record + newRecord := models.NewRecord(collection) + + // Convert ServerInfo to a map + recordMap := map[string]interface{}{ + "UserID": record.UserID, + "ConnectionDetails": record.ConnectionDetails, + } + + // Bulk load with record.Load(map[string]interface{}) + newRecord.Load(recordMap) + + // Save the record + if err := app.Dao().SaveRecord(newRecord); err != nil { + log.Error(err) + return err + } + + return nil +} diff --git a/pb_data/data.db b/pb_data/data.db index 4cde9ef..06699f1 100644 Binary files a/pb_data/data.db and b/pb_data/data.db differ diff --git a/pb_data/logs.db b/pb_data/logs.db index 6f42c57..cee835f 100644 Binary files a/pb_data/logs.db and b/pb_data/logs.db differ