diff --git a/actions/upload_image_to_imgur.js b/actions/upload_image_to_imgur.js
new file mode 100644
index 00000000..db16f11f
--- /dev/null
+++ b/actions/upload_image_to_imgur.js
@@ -0,0 +1,97 @@
+const { ImgurClient } = require('imgur');
+
+module.exports = {
+ name: 'Upload Image To Imgur',
+ section: 'Other Stuff',
+
+ subtitle() {
+ return `Upload Image to Imgur`;
+ },
+
+ variableStorage(data, varType) {
+ const type = parseInt(data.storage, 10);
+ if (type !== varType) return;
+ return [data.varName2, 'Image URL'];
+ },
+
+ fields: ['clientID', 'clientSecret', 'refreshToken', 'imageURL', 'storage', 'varName2'],
+
+ html() {
+ return `
+
+
+
+
+ Image URL:
+
+
+
+ Store In:
+
+
+
+
+
+ Variable Name:
+
+
+
`;
+ },
+
+ init() {},
+
+ action(cache) {
+ const data = cache.actions[cache.index];
+ const clientID = this.evalMessage(data.clientID, cache);
+ const clientSecret = this.evalMessage(data.clientSecret, cache);
+ const refreshToken = this.evalMessage(data.refreshToken, cache);
+ const imageURL = this.evalMessage(data.imageURL, cache);
+ const varName2 = this.evalMessage(data.varName2, cache);
+ const storage = parseInt(data.storage, 10);
+
+ if (!clientID || !imageURL) {
+ console.error('Client ID or Image URL is missing!');
+ return this.callNextAction(cache);
+ }
+
+ const client = new ImgurClient({
+ clientId: clientID,
+ clientSecret: clientSecret || undefined,
+ refreshToken: refreshToken || undefined,
+ });
+
+ client
+ .upload({
+ image: imageURL,
+ type: 'url',
+ })
+ .then((response) => {
+ const uploadedImageUrl = response.data.link;
+ this.storeValue(uploadedImageUrl, storage, varName2, cache);
+ this.callNextAction(cache);
+ })
+ .catch((err) => {
+ console.error('Error uploading image to Imgur:', err.message);
+ this.callNextAction(cache);
+ });
+ },
+ mod() {},
+};