{"id":37518993,"url":"https://github.com/karafra/ai-art","last_synced_at":"2026-01-16T08:12:00.982Z","repository":{"id":37788822,"uuid":"501439374","full_name":"karafra/ai-art","owner":"karafra","description":"Discord bot generating images from given query","archived":false,"fork":false,"pushed_at":"2023-05-23T17:48:24.000Z","size":22089,"stargazers_count":70,"open_issues_count":12,"forks_count":35,"subscribers_count":3,"default_branch":"main","last_synced_at":"2023-05-23T18:29:34.719Z","etag":null,"topics":["ai","art","artificial-intelligence","bot","dalle-mini","discord","discord-bot","discord-js","generator","heroku","heroku-deployment","integration"],"latest_commit_sha":null,"homepage":"https://karafra.github.io/ai-art/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/karafra.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"custom":"https://www.buymeacoffee.com/karafra"}},"created_at":"2022-06-08T23:18:52.000Z","updated_at":"2023-05-23T12:25:21.000Z","dependencies_parsed_at":"2023-02-08T07:31:01.381Z","dependency_job_id":null,"html_url":"https://github.com/karafra/ai-art","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/karafra/ai-art","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karafra%2Fai-art","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karafra%2Fai-art/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karafra%2Fai-art/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karafra%2Fai-art/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/karafra","download_url":"https://codeload.github.com/karafra/ai-art/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karafra%2Fai-art/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","art","artificial-intelligence","bot","dalle-mini","discord","discord-bot","discord-js","generator","heroku","heroku-deployment","integration"],"created_at":"2026-01-16T08:12:00.397Z","updated_at":"2026-01-16T08:12:00.971Z","avatar_url":"https://github.com/karafra.png","language":"TypeScript","funding_links":["https://www.buymeacoffee.com/karafra"],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"top\"\u003e\u003c/div\u003e\n\u003c!--\n*** Thanks for checking out the Best-README-Template. If you have a suggestion\n*** that would make this better, please fork the repo and create a pull request\n*** or simply open an issue with the tag \"enhancement\".\n*** Don't forget to give the project a star!\n*** Thanks again! Now go create something AMAZING! :D\n--\u003e\n\n\u003c!-- PROJECT SHIELDS --\u003e\n\u003c!--\n*** I'm using markdown \"reference style\" links for readability.\n*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).\n*** See the bottom of this document for the declaration of the reference variables\n*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.\n*** https://www.markdownguide.org/basic-syntax/#reference-style-links\n--\u003e\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![Codecov][codecov-shield]][codecov-url]\n[![MIT License][license-shield]][license-url]\n[![Discord][discord-shield]][discord-invite]\n[![TOP.GG][top-gg-shield]][top-gg-link]\n[![Buy me a coffee][buy-me-a-coffee-badge]][buy-me-a-coffee-url]\n\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/karafra/ai-art\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/karafra/ai-art/main/.github/images/logo.png\" alt=\"Logo\" width=\"80\" height=\"80\"\u003e\n  \u003c/a\u003e\n\n\u003ch3 align=\"center\"\u003eAI Art\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    Discord bot generating AI art collages\n    \u003cbr /\u003e\n    \u003ca href=\"https://karafra.github.io/ai-art/\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://discord.gg/VDKhbrc73Z\"\u003eView Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/karafra/ai-art/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/karafra/ai-art/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#deployment\"\u003eDeployment\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n## About The Project\n\n\u003cdiv align=\"center\"\u003e\n\n  [![Product Name Screen Shot][product-screenshot]][discord-invite]\n\n\u003c/div\u003e\n\nSimple discord bot which generates collages based on any query you give it (most of the time). This bot uses model which you can find [here](https://huggingface.co/spaces/dalle-mini/dalle-mini)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### Built With\n\n-   [Typescript](https://www.typescriptlang.org/)\n-   [Discord.js](https://discord.js.org/)\n-   [Collage](https://www.npmjs.com/package/@settlin/collage)\n-   [Canvas](https://www.npmjs.com/package/canvas)\n-   [amqp-client.js](https://github.com/cloudamqp/amqp-client.js/)\n-   [Sentry.io](https://sentry.io)\n-   [Jest](https://jestjs.io)\n-   [Codecov](https://codecov.io)\n-   [Docker](https://docker.com)\n-   [NestJs](https://nestjs.com)\n-   [Compodoc](https://compodoc.app)\n-   [Mongo](https://www.mongodb.com/)\n-   [TypeORM](https://typeorm.io/)\n-   [GraphQl](https://graphql.org/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n\n## Getting Started\n### Prerequisites\n\nThis is an example of how to list things you need to use the software and how to install them.\n\n-   npm\n    ```sh\n    npm install npm@latest -g\n    ```\n\n### Installation\n\n1. Create Discord application on a free API Key at [https://discord.com/developers/](https://discord.com/developers/)\n\n2. Click on *Bot* tab and save your token.\n\n3. Clone the repo\n    ```sh\n    git clone https://github.com/karafra/ai-art.git\n    ```\n4. Install NPM packages\n    ```sh\n    npm install\n    ```\n5. Enter your API key and bot id into [config.yml](./config.yml). \n    ```yaml\n    sentry:\n      dsn: \"{SENTRY_DSN}\"\n    # This one is optional ... only if you want to use ai-story command\n    openAi:\n      token: ...\n    amqp:\n      url: \"{AMQP_URL}\"\n    discord:\n        token: \"{DISCORD_TOKEN}\"\n    deploy:\n      port: \"{PORT}\"\n    ```\n\n    Configuration file supports simple environment variable substitution in format __\"{VARIABLE_NAME}\"__, where parentheses are __required__. \n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- DEPLOYMENT --\u003e\n\n## Deployment\n\n### Method 1: Deployment to Heroku\n\nRecommended method of deploying this bot is deployment on [Heroku](https://www.heroku.com/). To deploy to Heroku please click on button bellow.\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://heroku.com/deploy?template=https://github.com/karafra/ai-art.git\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/%E2%86%91_Deploy_to-Heroku-7056bf.svg?style=for-the-badge\" alt=\"Deploy\"\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n##### IMPORTANT\n\n\nAfter successful deployment you will have to switch dyno from `web` to `worker`. If you do not do this, app will not bind to port and fail. \n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/karafra/ai-art/main/.github/images/heroku-dynos.png\" /\u003e\n\u003c/p\u003e\n\nAfter successful deployment you can invite bot to your server by clicking on this link `https://discord.com/api/oauth2/authorize?client_id={CLIENT_ID}\u0026permissions=34816\u0026scope=applications.commands%20bot`, where `CLIENT_ID` is your bots client id. Link already contains minimal scopes (_bot_, _application.commands_) and minimal bot permissions (_send messages_, _attach files_)\n\n### Method 2: Containerized deployment:\nAnother even easier method of deployment is deployment via docker container.\n\n1. Verify docker-compose installation\n\n    A] Type `docker-compose -v` into terminal. if output looks similar to `docker-compose version 1.29.2, build 5becea4c` then you can continue to the next step.\n\n    B] If this command throws an error, you have to follow [docker-compose installation guide](https://docs.docker.com/compose/install/)\n\n2. Set required variables\n    - Only required variables is `TOKEN`, this can be set as environment variables using `export ENV_NAME=VALUE` on linux based OS or `$env:VARIABLE_NAME=VALUE` on Windows based OS\n\n3. Building Docker containers\n  - Type `docker-compose -f \"docker/deploy/docker-compose.yml\" build` into terminal, this will automatically build all required docker images.\n\n4. Start container\n    - Type `docker-compose -f \"docker/deploy/docker-compose.yml\" up` into terminal. This will start all services needed. RabbitMQ management console will be accessible [here](http://localhost:15673/) with login credentials being:\n      - username:   \n        - `guest`\n      - password:\n        - `guest`\n    \n    - MongoDb management console will be accessible [here](https://localhost:8081/) without any login credentials\n\n__This network is not external, so it will not be accessible from outside.__\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- USAGE EXAMPLES --\u003e\n\n## Usage\n\nCommands are separated into 2 command groups\n\n- `help` - Help command \n- `/ai-art`\n  - `cog-view-2` - Generates collage of 9 images using CogView2 model\n  - `dalle-mini` - Generates collage of 9 images using Dall-e mini model\n  - `wombo-dream` - Generartes one image based on WomboDream model  \n- `/ai-story`\n  - `story` - Generates story from given headline (Requires OpenAi API) token\n\n- React with :envelope: to any collage and bot will dm it to you.\n\nDiscord offers autocompletion so all you need is to start typing name of the command or group in which command is, discord will then guide you through all the required parameters using its autocompletion.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/karafra/ai-art/main/.github/images/command-selection.png\" /\u003e\n\u003c/p\u003e\n\n_For more examples, please refer to the [Documentation](https://karafra.github.io/ai-art/additional-documentation/commands.html)_\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nIf you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a star! Thanks again!\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- LICENSE --\u003e\n\n## License\n\nDistributed under the Apache2.0 License. See [LICENSE](./LICENSE) for more information.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTACT --\u003e\n\n## Contact\n\nYour Name - [@Karafro](https://twitter.com/Karafro) - dariusKralovic@protonmail.com\n\nProject Link: [https://github.com/karafra/ai-art](https://github.com/karafra/ai-art)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- ACKNOWLEDGMENTS --\u003e\n\n## Acknowledgments\n\n- [DALL·E Mini](https://github.com/borisdayma/dalle-mini)\n  - Image generation model for `/ai-art dalle-mini`\n- [CogView2](https://github.com/THUDM/CogView2)\n  - Image generation model for `/ai-art cog-view-2`\n- [Open Ai](https://beta.openai.com/playground)\n  - Story generation model for `/ai-story story`\n- [WomboDream](https://www.wombo.art/)\n  - Art generation model for `ai-art wombo-art`\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n\n[contributors-shield]: https://img.shields.io/github/contributors/karafra/ai-art.svg?style=for-the-badge\n[contributors-url]: https://github.com/karafra/ai-art/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/karafra/ai-art.svg?style=for-the-badge\n[forks-url]: https://github.com/karafra/ai-art/network/members\n[stars-shield]: https://img.shields.io/github/stars/karafra/ai-art.svg?style=for-the-badge\n[stars-url]: https://github.com/karafra/ai-art/stargazers\n[issues-shield]: https://img.shields.io/github/issues/karafra/ai-art.svg?style=for-the-badge\n[issues-url]: https://github.com/karafra/ai-art/issues\n[license-shield]: https://img.shields.io/github/license/karafra/ai-art.svg?style=for-the-badge\n[license-url]: https://github.com/karafra/ai-art/blob/master/LICENSE.txt\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=555\n[linkedin-url]: https://linkedin.com/in/linkedin_username\n[product-screenshot]: https://raw.githubusercontent.com/karafra/ai-art/main/.github/images/showcase.gif\n[discord-shield]: https://img.shields.io/discord/984823638333210715?color=purple\u0026label=DEMO%20SERVER\u0026logo=discord\u0026logoColor=white\u0026style=for-the-badge\n[discord-invite]:https://discord.gg/VDKhbrc73Z\n[top-gg-shield]: https://img.shields.io/static/v1?label=TOP.GG\u0026message=LISTED\u0026color=purple\u0026style=for-the-badge\u0026logo=google-chrome\u0026logoColor=white\n[top-gg-link]: https://top.gg/bot/984821826096091206\n[codecov-shield]: https://img.shields.io/codecov/c/github/karafra/ai-art?style=for-the-badge\u0026token=zeGtflSZ48\n[codecov-url]: https://app.codecov.io/gh/karafra/ai-art\n[buy-me-a-coffee-badge]: https://img.shields.io/badge/-buy_me_a%C2%A0coffee-gray?logo=buy-me-a-coffee\u0026style=for-the-badge\n[buy-me-a-coffee-url]: https://www.buymeacoffee.com/karafra\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarafra%2Fai-art","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkarafra%2Fai-art","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarafra%2Fai-art/lists"}