pigeon: FAQ
This is outdated and in need of a revise. In the meantime, please read the tutorial if you're actually searching for correct information.
Disclaimer
Some answers are humorous. If they mislead you, find another bot to use, because I don't want to serve you.
In a nutshell
pigeon is a minimalist AI chatbot for Discord. It is designed to listen to a singular channel and respond to all messages (excl bots) within it. These messages are stored in a chat history of up to 200 messages. pigeon can NOT process/see attachments, heavily search the web, or do any fancy stuff. It is intentionally lacking modern features. pigeon can also be called anywhere within a server @pigeon. These calls do not process external context (as in the past 5 messages), and these calls also do not contribute to your chat history context. pigeon can be used as normal in direct messages, but not everything is supported. Your chat can be exported with /history, cleared using /clearhistory, and imported using /import. Import files can be generated using /history, clicking "View raw data" and saving the page, such as CTRL+S or then on mobile.
Q: What is this?
A: pigeon is a simple AI Discord chatbot. You can talk to it in a server, or DMs. Just here
for a chat, you heard?
Q: I found a bug! How do I report it?
A: Email me! me@exerinity.com
If that bug also threw some errors, give me the timestamp of when it happened! Thank you in advance, Batman.
Q: Can I set custom instructions?
A: soon™
Q: What is the timer for?

A: pigeon employs a small timer for all messages for a few reasons:
- Debugging
- Used in tandem with the 2.5 second rate limit (read below)
- Aesthetical reasons. It's not in your way.
| Seconds | Label | How / What |
|---|---|---|
| < 2 | fast | casual chats or greetings |
| 2 – 9 | average | asking longer questions |
| > 9 | slow | writing large amounts of text, translating, or other complex tasks |
Q: When was it made?
A: September 2024. Idea coined July.
Q: Why is the model so stupid?
A: Because I'm still tuning the system instructions and constantly comparing models. If you
want top-tier professional always-correct answers, you're in the wrong place.
Q: Why won't it respond?
A: Check that the bot has permission to send messages in the channel. If it does, check the
set channel using /chat. If none is set, set one using the same command.
If it does not respond in direct messages, make sure you have DMs enabled from server members. If you do,
check the
mutual servers - one may have DMs temporarily paused. If it still doesn't work, email me.
Q: Are there limits?
A: In terms of per chat? Yes, 200 messages. I plan on raising this as development
progresses, but it's not important. In terms of a rate limit? Not that I'm aware of. I didn't set any hard
limits, but it may hit rate limits.
If you get over 200 messages, the oldest get overwritten, so it won't just suddenly "stop" when you reach
it.
There is a 2.5 second message cooldown per person to prevent spam. This is a generous limit -
Discord is very easy to spam quickly, but 2.5 seconds gives you time to respond.
Very long messages
are paginated into several messages.
Q: Do you store chats?
A: No, unless you run /history, which it is stored for 3 days. I
do not check them unless someone has notified me of misuse or bugs. "External server" is sugarcoating that
its a Cloudflare R2 bucket.
Q: I don't know how to use this! How?
A: RTFM
Q: Is this just a ChatGPT wrapper?
A:
Q: What model do you use?
A: Gemini 2.5 Flash. pigeon started off on GPT-3.5, moved to Gemma (Gemini's little
brother), then LLaMA 4 Scout. Gemini seems pretty sufficient but will most likely change again the future;
since pigeon is entirely experimental.
Q: Is it Cloudflare AI?
A: formerly
Q: Why is it called pigeon?
A: Because historically
pigeons delivered messages. The name was chosen arbitrarily - it was just a random word and I later
found a good reason for it.
Q: Can it process and/or generate images?
A: no
Q: How much does it cost to run this?
A: Less than $15 a month. I make it simple, which results in not needing lots of resources.
You could run pigeon on a capsicum and still get 3 second replies.
Q: What is the knowledge cut-off date?
A: Gemini 2.5 Flash has a knowledge cut-off date of January 2025. I plan on enabling
Google
search in the future.. if that's even possible. pigeon can now search!
Q: Can I discuss explicit content with it?
A: Probably not. I didn't tell it "no", but the model itself might refuse. After all, it is
Google.
Q: Why does the model change so much?
A: It doesn't. The last model switch was in July 2025.
Q: What is this error?
A: All errors are logged. If you see one, tell me when it happened, and I'll
investigate.
Upon errors, pigeon will retry your prompt 3 times. This should still work, but if it doesn't, send
it my way.
Q: Why is it so slow?
A: pigeon does not stream responses unlike websites like ChatGPT. At idle, the response
times will be roughly the same. Streaming makes it feel faster.
Otherwise, the bot is under some load. Try it later. It's like a hot water system, freeway or home internet,
slows
down when many use it.
Q: Why doesn't it stream responses?
A: Because it's Discord. A chat app. It is theoretically possible, with Discord's
50-requests-a-second limit, but absolutely
pointless.
If you have no idea what that means, it means the bot only responds once generating is done. Things like
ChatGPT, Gemini, or Copilot actively stream each word/token as they're generated.
Q: How did you make this?
A: Queue some big-room EDM and read a lot of documentations. It uses discord.js, a
structure I made myself (and totally over-engineered), @google/genai to actually talk, and lots of if
elses.
Out of all seriousness, the stack is pretty modular, I might release it sometime.
For anyone who cares, the bot looks like this:

Here's what each folder does:
- commands: where the commands are, obviously
- config: configuration, where most of the rules and settings exist, that let me change stuff very easily
- data: where your stats and IDs are stored
- events: where the event handlers are, like messageCreate, ready, interactionCreate, etc
- logs: where the error logs are stored (errors are also sent to me on discord via a webhook)
- node_modules: idk
- server: the backend server, which just provides health check and live stats for my central heartbeat monitoring system. No, this site is not in there.
- utils: utilities, like showing activity, errors, and stats
And the files:
- .env: basically the keys to the castle
- bot.js: the main bot file, where the client is defined and logged in at
- i.json: legacy credentials file. i should delete this.
- main.js: basically the entry point, the nuclear reactor, the big cheese. It starts... everything, and keeps it alive.