Thingy
Discord bot to generate images based on a text prompt - way more than just that! Through a wide variety of tools, you can alter your generated images and share them with friends.
Integrates with DiscoArt, Stable Diffusion and other peculiarities, all rolled up in a single, sexy user interface that allows one to mix and match different configurations without a steeper learning curve!
- Powerful customization tools
- Fairness queue: Making sure everyone gets to make art!
- Social features: Sharing, profiles and stats
- Advanced Profile customization
- Chapters: Work on your pieces, and switch back to previous works of art!
- Every "creation" command (
/stable_diffusion
,/disco_diffusion
) results in a new chapter - Users can use variation commands (
/upscale
,/variate
,more to come) to alter said chapters as they wish - Don't like a change? Just do
/rollback
! There's unlimited undo! - Users can instantly swap back to previous chapters with
/chapters
- Every "creation" command (
In short: this bot allows you to generate images based on a text prompt, but can do way more than just that - offering a wide variety of tools to make alter your generated images.
Credits and special thanks
- First and foremost Han Xiao for being around in DMs helping me with what I struggled with but also putting me on the right direction in various moments
- DiscoArt: without this project, I was never able to cook this up in a weekend
- Jina which has some incredible tooling I got familiar with
Demo
My discord server has the bot running, both alpha and production bots are up!
Run it yourself!
As this bot is open-source, anyone can run it. Depending on the method, you need different specs. The easiest is through Docker and Jina's JCloud
Installing via Docker
Note! As we evolved from a weekend project to a larger-scale bot, things have changed a lot, and I thank you all. Please, if you use this in your own server, do get in touch with me, so we can see what works and what doesn't. Any feedback is really appreciated! Feel free to join Thingy's birthplace or shoot a line in the projects Issues page!
What you need:
- Linux or Windows with Docker installed (Or download here)
- Discord account and bot (more on this later)
Steps:
-
Create a directory where we will set up our bot
- If you ran an older version of the bot, you can drop your
db.sqlite
here. Keep in mind the configuration has changed slightly. Otherwise, you can ignore this.
- If you ran an older version of the bot, you can drop your
-
Download this file and name it
config.yml
, put it into the bot directory. -
Once done, follow "Setting up the bot" and then go back here
-
Download the bot interface (communicates with the AI) from here and put it in the bot directory
-
The following steps are for running the AI remotely on JCloud! (Free for now!)
-
We need to start the Docker image:
-
If you're starting fresh, you can use the following command in the bot directory:
docker run -v $(pwd):/opt/thingy/data -d --name=thingy peterwilli/thingy:latest
-
If you've ran the bot on JCloud before, chances are it's already up. Run
jc list
either in an already spawned container, or whatever your current setup is. If there's a link, you can runjina status <id from jc list>
to see if it's the thingy flow (typically contains executors likestable_diffusion_txt2img
andstable_diffusion_img2img
)You can now run
docker run -v $(pwd):/opt/thingy/data -it --name=thingy --env CURRENT_JCLOUD_URL=grpcs://xxxxx.wolf.jina.ai peterwilli/thingy:2.0-alpha3
where xxxxx is your Jina instance ID.
-
-
Once it is running, log in to JCloud by running:
docker exec -it thingy jc login
. You should now get a link that you can copy-paste in your browser to login. -
You should now see a error about docker not being present, that's ok, it will still work.
-
Now you should be able to run
/stable_diffusion
and other peculiarities in Discord! The first time it might take a while to run.
-
Setting up the bot
- Create a Discord application on their developer portal
- Make a discord bot by clicking on the Bot menu, and click "Add Bot". Name it as you like
- Click "Reset Token" to reveal the bot token. Make note of this token, you need it in the next step
- In the config.yml, change the bot name and token to your bot token
- Go to Hugginface Tokens (make an account if you don't have one yet) and create a token
- Replace
token_from_hf
in config.yml with the token you just created - This token allows you access to the Stable Diffusion model!
- Replace
- Assuming you run the Jina Flow server as well as the Discord bot on the same machine, you don't need to do anything
- If your Jina server is remote, you have to change
host
andport
undergrpcServer
- If you run on JCLoud, make sure to set
port
to443
andplainText
tofalse
!- Make sure
host
does not includegrpcs://
!
- Make sure
- If your Jina server is remote, you have to change
- Save the config
- Go to the OAuth2 menu, and click the URL Generator submenu. Check off the Bot checkbox
- In bot permissions, you only need the following:
- After you have done this, you can copy the link and invite the bot into your server
- The first time, the bot may be triggering a timeout error, this is because it has to download all the model files. After it's done, it'll run properly
- You can now resume the previous steps (wherever you were forwarded from)
How to enable the Share feature (optional)
- Make sure Discord is in developer mode
- Make a channel, any place you like (bot needs to be able to post to it, so make sure has write permissions there). Name it something like
gallery
- Right-click on the channel and click "Copy ID"
- Paste the channel ID in
shareChannelID
in the bot'sconfig.yml
. Restart bot if its running! - Now you and your members can use
/share
for showcasing your fine art!
Sister projects
These are co-developed with Thingy!
Changelog
- 26 sept 2022: Added Keep My JCloud as sister project, integrated in the bot using Docker. It keeps JCloud instances running by re-deploying if it dissapears.