The funny Andrew_Fish27 bot. For now, it's very top secret!

This gives you nothing but the accurate experience with Andrew, anytime, anywhere!
It's even got his Griffith, Kanye, Reagan, Mussolini AND even his Nick Fuentes obsession, what more could you ask for?!
This bot was made as an inside-joke, and it can be pretty offensive, so there's that. But hey, it's also pretty funny to see the braindead spew its yap, I'd say.
(Of course, we don't condone anything he says. This is purely satire, and it does not reflect our personal views.)
It features over 1000 (and counting!) nonsensical messages that sent at random intervals, as well as peak slash commands, vision capablities, TTS, and hell, it's even got a LLM!
And for even more entertainment; he's even got a enemy that beefs with Andrew! (It ain't included with Andrew Bot though, obviously. It has to be installed seperately, and it is admittedly more outdated than Andrew.)
First and foremost, you would have to clone the repo using:
git clone https://github.com/SpookedDoor/Andrew-Discord-Bot.git
Or you can just simply use Github Desktop, whatever floats your boat.
Before using this bot, I'd recommend reading the discord.js guide, if you haven't already.
Make sure to run npm install to install all of the necessary dependencies for you.
You WILL need to have a .env file and have it look like this:
DISCORD_TOKEN=YOURTOKENHERE
DISCORD_CLIENT_ID=YOURIDHERE
BRAVE_API_KEY=YOURKEYHERE
GOOGLE_API_KEY=YOURKEYHERE
GOOGLE_CSE_ID=YOURIDHERE
GEMINI_API_KEY=YOURKEYHERE
MISTRAL_API_KEY=YOURKEYHERE
NVIDIA_API_KEY=YOURKEYHERE
ELEVENLABS_API_KEY=YOURKEYHERE
SAUCENAO_API_KEY=YOURKEYHERE
LASTFM_API_KEY=YOURKEYHERE
LASTFM_AUTH_SERVER=https://
DATABASE_URL=postgresql://The bot uses Brave for normal web searches and Google for its image searches, if you don't want to use Google, then you'll have to edit gpt.js, gptimage.js and messageCreate.js and change all instances of googleImageSearch to braveImageSearch. If you don't want the bot to have web search capabilities, then you gotta delete the files related to that and also remove the associated code in those files. That would probably be a bit more of a hassle than just creating a Brave Search API account. The AI will still work without an API key provided for web searches, but you will see errors in the console, and the bot will be a bit dumber I suppose.
If you are planning to use online AI services instead of KoboldCPP, you would of course need to put your API key in there. A template.env is provided which shows you how it's set up and all you really gotta do is add in your own token and API keys. OBVIOUSLY, remove template from template.env.
Speaking of which... we now added aiSettings.js which makes it a lot easier to work with other AI services and switch models quickly!
I recommend using local AIs as there are practically no costs or limits (other than your GPU of course) but if you decide to go with an online AI service, I would highly recommend Nvidia API or Google Gemini as rate limits for free users are pretty decent for now. I would lean more on using Nvidia right now, as it is less censored than Gemini and provides a wide range of models. However, either option is good. Openrouter is also free to use but it does have its limits, and OpenAI is by far the worst and most expensive option.
Also, 🖕 Chutes for being no longer free.
Currently, the bot is now using Nvidia by default. Obviously, you may prefer to use a local AI (if you have the power to do so) and that is all detailed below. If you prefer a different service, you can figure everything out yourself just by looking at aiSettings.js.
Install a local AI backend such as KoboldCPP. Follow KoboldCPP's guide on getting everything set up. The most important part is obtaining an AI model. Make sure that you download a GGUF file and at least something that your PC can handle with ease (that means you can't just simply download Deepseek. If you want to use that, please use a service that provides it, like Chutes).
For vision to work locally, download the correct mmproj. For example, if you are using a model based on Llama3, download the one that says Llama3, then you would insert it into Loaded Files > Vision mmproj.
Once that is installed and running, make sure to set your baseURL in aiSettings.js. It should look like:
baseURL: "http://localhost:5001/v1",
apiKey: "0"And make sure all model variables in aiSettings.js are set to "koboldcpp".
Simple!
We use PostgreSQL for Andrew's database. You can find the schema in migrations/001_migration.sql. You can host the database yourself or use a service like Neon which is completely free for small projects and it's what we use.
With lastfm_links, this table isn't actually referenced anywhere in Andrew bot's code. Instead, you should refer to Dragonary's Lastfm-Auth-Server-Discord. This is for linking Last.fm accounts with Discord users, and that repo will show you how it's done, as long as you read the README of course. Once you get the auth server all set up, all you have to do is stick the URL into Andrew bot's .env file and that's it.
Well, there you have it! The rest is pretty self-explanatory. You can look through the code and edit it and whatnot.
You can go ahead and adjust the code to your liking, or just use the bot as-is after having done the necessities.
Though I'll note; if you were to hypothetically use any aspect of this for other projects, I'd recommend you credit both me; SpookedDoor as well as Dragonary (especially him. Dude's carried the project and without him, most of the impactful features wouldn't even BE here.)
For even more help, refer to the wiki page.
