From fbb9064434eef8c997ac5b4b58b0e7707ba9df32 Mon Sep 17 00:00:00 2001
From: Toastie <toastie@toastiet0ast.com>
Date: Sat, 15 Mar 2025 11:44:18 +1300
Subject: [PATCH] .savechat will now be unlimited if ran by the bot owner

---
 src/EllieBot/Modules/Utility/Utility.cs       |   2 +-
 .../strings/commands/commands.en-US.yml       | 162 +++++++++---------
 2 files changed, 85 insertions(+), 79 deletions(-)

diff --git a/src/EllieBot/Modules/Utility/Utility.cs b/src/EllieBot/Modules/Utility/Utility.cs
index 54c941e..4ce73fc 100644
--- a/src/EllieBot/Modules/Utility/Utility.cs
+++ b/src/EllieBot/Modules/Utility/Utility.cs
@@ -649,7 +649,7 @@ public partial class Utility : EllieModule
     [Ratelimit(3600)]
     public async Task SaveChat(int cnt)
     {
-        if (cnt > 1000)
+        if (!_creds.IsOwner(ctx.User) && cnt > 1000)
             return;
 
         var msgs = new List<IMessage>(cnt);
diff --git a/src/EllieBot/strings/commands/commands.en-US.yml b/src/EllieBot/strings/commands/commands.en-US.yml
index 88e793c..98f8a2b 100644
--- a/src/EllieBot/strings/commands/commands.en-US.yml
+++ b/src/EllieBot/strings/commands/commands.en-US.yml
@@ -378,8 +378,8 @@ sargroupdelete:
         desc: "The number of the group to delete."
 sarexclusive:
   desc: |-
-    Toggles whether self-assigned roles are exclusive.
-    While enabled, users can only have one self-assignable role per group.
+    Toggles the sar group as exclusive.
+    While enabled, users can only have one self-assignable role from that group.
   ex:
     - '1'
   params:
@@ -418,7 +418,11 @@ iamnot:
     - role:
         desc: "The role to remove."
 expradd:
-  desc: 'Add an expression with a trigger and a response. Bot will post a response whenever someone types the trigger word.  Running this command in a server requires the Administrator permission. Running this command in DM is Bot Owner only and adds a new global expression. Guide [here](<https://docs.elliebot.net/ellie/features/expressions/>)'
+  desc: |-
+    Add an expression with a trigger and a response.
+    Bot will post a response whenever someone types the trigger word.
+    Running this command in a server requires the Administrator permission.
+    Running this command in DM is Bot Owner only and adds a new global expression.
   ex:
     - '"hello" Hi there %user.mention%'
   params:
@@ -427,7 +431,7 @@ expradd:
       response:
         desc: "The text of the message that shows up when a user types the trigger word or phrase."
 expraddserver:
-  desc: 'Add an expression with a trigger and a response in this server. Bot will post a response whenever someone types the trigger word. This command is useful if you want to lower the permission requirement for managing expressions by using `{0}dpo`. Guide [here](<https://docs.elliebot.net/ellie/features/expressions/>).'
+  desc: 'Add an expression with a trigger and a response in this server. Bot will post a response whenever someone types the trigger word. This command is useful if you want to lower the permission requirement for managing expressions by using `{0}dpo`.'
   ex:
     - '"hello" Hi there %user.mention%'
   params:
@@ -892,7 +896,9 @@ send:
       text:
         desc: "The recipient's preferred format for the message, such as plain text or formatted text with images and links."
 savechat:
-  desc: Saves a number of messages to a text file and sends it to you.
+  desc: |-
+    Saves a number of messages to a text file and sends it to you.
+    Max is 1000, unless you're the bot owner. 
   ex:
     - 150
   params:
@@ -1848,7 +1854,7 @@ playlistload:
     - 5
   params:
     - id:
-        desc: "The id of the playlist to be loaded."
+        desc: "The id of the playlist to be loaded."        
 playlistsave:
   desc: Saves a playlist under a certain name. Playlist name must be no longer than 20 characters and must not contain dashes.
   ex:
@@ -3695,16 +3701,16 @@ clubicon:
     - url:
         desc: "The URL of an image file to use as the club icon."
 clubbanner:
-   desc: |-
-     Sets an image as a club banner.
-     The banner will be displayed when club information is shown.
-   ex:
-     - 'https://i.imgur.com/example.png'
-     - ''
-   params:
-     - { }
-     - url:
-         desc: "URL to the image to set as a club banner."
+  desc: |-
+    Sets an image as a club banner.
+    The banner will be displayed when club information is shown.
+  ex:
+    - 'https://i.imgur.com/example.png'
+    - ''
+  params:
+    - { }
+    - url:
+        desc: "URL to the image to set as a club banner."
 clubapps:
   desc: Shows the list of users who have applied to your club. Paginated. You must be club owner to use this command.
   ex:
@@ -4221,7 +4227,7 @@ marmaladeload:
 marmaladeunload:
   desc: |-
     Unloads the previously loaded marmalade.
-    Provide no name to see the list of unloadable marmalades. 
+    Provide no name to see the list of unloadable marmalades.
     Read about the marmalade system [here](https://docs.elliebot.net/ellie/marmalade/creating-a-marmalade/)
   ex:
     - mycoolmarmalade
@@ -4232,7 +4238,7 @@ marmaladeunload:
 marmaladeinfo:
   desc: |-
     Shows information about the specified marmalade such as the author, name, description, list of canaries, number of commands etc.
-    Provide no name to see the basic information about all loaded marmalades. 
+    Provide no name to see the basic information about all loaded marmalades.
     Read about the marmalade system [here](https://docs.elliebot.net/ellie/marmalade/creating-a-marmalade/)
   ex:
     - mycoolmarmalade
@@ -4874,10 +4880,10 @@ minesweeper:
 notify:
   desc: |-
     Sends a message to the specified channel once the specified event occurs.
-
+    
     If no channel is specified, the message will be sent to the channel from which the event originated.
     *note: this is only possible for events that have an origin channel (for example `levelup`)*
-
+    
     Provide no parameters to see all available events.
   ex:
     - 'levelup Congratulations to user %user.name% for reaching level %event.level%'
@@ -4990,60 +4996,60 @@ xpratereset:
     - channel:
         desc: "The channel to reset the rate for."
 lyrics:
-   desc: |-
-     Looks up lyrics for a song. Very hit or miss.
-   ex:
-     - 'biri biri'
-   params:
-     - song:
-         desc: "The song to look up lyrics for."
+  desc: |-
+    Looks up lyrics for a song. Very hit or miss.
+  ex:
+    - 'biri biri'
+  params:
+    - song:
+        desc: "The song to look up lyrics for."
 userroleassign:
-   desc: |-
-     Assigns a role to a user that can later be modified by that user.
-   ex:
-     - '@User @Role'
-   params:
-     - user:
-         desc: 'The user to assign the role to.'
-       role:
-         desc: 'The role to assign.'
+  desc: |-
+    Assigns a role to a user that can later be modified by that user.
+  ex:
+    - '@User @Role'
+  params:
+    - user:
+        desc: 'The user to assign the role to.'
+      role:
+        desc: 'The role to assign.'
 userroleremove:
-   desc: |-
-     Removes a previously assigned role from a user.
-   ex:
-     - '@User @Role'
-   params:
-     - user:
-         desc: 'The user to remove the role from.'
-       role:
-         desc: 'The role to remove.' 
+  desc: |-
+    Removes a previously assigned role from a user.
+  ex:
+    - '@User @Role'
+  params:
+    - user:
+        desc: 'The user to remove the role from.'
+      role:
+        desc: 'The role to remove.'
 userrolelist:
-   desc: |-
-     Lists all user roles in the server, or for a specific user.
-   ex:
-     - ''
-     - '@User'
-   params:
-     - { }
-     - user:
-         desc: 'The user whose roles to list.'
+  desc: |-
+    Lists all user roles in the server, or for a specific user.
+  ex:
+    - ''
+    - '@User'
+  params:
+    - { }
+    - user:
+        desc: 'The user whose roles to list.'
 userrolemy:
-   desc: |-
-     Lists all of the user roles assigned to you.
-   ex:
-     - ''
-   params:
-     - { }
+  desc: |-
+    Lists all of the user roles assigned to you.
+  ex:
+    - ''
+  params:
+    - { }
 userrolecolor:
-   desc: |-
-     Changes the color of your assigned role.
-   ex:
-     - '@Role #ff0000'
-   params:
-     - role:
-         desc: 'The assigned role to change the color of.'
-       color:
-         desc: 'The new color for the role in hex format.' 
+  desc: |-
+    Changes the color of your assigned role.
+  ex:
+    - '@Role #ff0000'
+  params:
+    - role:
+        desc: 'The assigned role to change the color of.'
+      color:
+        desc: 'The new color for the role in hex format.'
 userroleicon:
   desc: |-
     Changes the icon of your assigned role.
@@ -5059,12 +5065,12 @@ userroleicon:
       serverEmoji:
         desc: 'The server emoji to be used as a new icon for the role.'
 userrolename:
-   desc: |-
-     Changes the name of your assigned role.
-   ex:
-     - '@Role New Role Name'
-   params:
-     - role:
-         desc: 'The assigned role to rename.'
-       name:
-         desc: 'The new name for the role.'
\ No newline at end of file
+  desc: |-
+    Changes the name of your assigned role.
+  ex:
+    - '@Role New Role Name'
+  params:
+    - role:
+        desc: 'The assigned role to rename.'
+      name:
+        desc: 'The new name for the role.'
\ No newline at end of file