A community-driven SysBot.NET project with a gorgeous UI, supporting LGPE, SWSH, BDSP, PLA, SV, and PLZA
Now rebranded from ZE FusionBot -> FusionBot.
Visit FreeMons.Org!
FusionBot is a powerful and open-source SysBot.NET fork, initially tailored for the Discord server Zeraora's Emporium. While originally built for internal server use, it has transformed into a beautiful, community-powered GUI with dozens of integrated forks and unique enhancements, catering to every Nintendo Switch Pokémon game.
FusionBot is a fusion by design — built from years of shared ideas, forks, experiments, and respect for the SysBot.NET ecosystem.
FusionBot was created, inspired, and upgraded through time, in pieces, through a collaboration of multiple developers of all skill levels with bright ideas and a hobby. There's many I know, and many I don't know, but I have respect and appreciation for them all. If they didn't inspire or help, simply diving into their code and learning C# over the years through their contributions helped me get to this point to continue to refine FusionBot and is also what allowed this project to grow into one of - if not the best SysBot program to date, in large to @hexbyt3's PokeBot, another contender as the best SysBot.
The projects below represent the strongest influences in the SysBot.NET space and the inspiration behind calling this a Fusion bot.
🧬 Click to view credits & inspirations
-
SysBot.NET
Created by @kwsch — also the creator of PKHeX.
The origin of everything. -
ForkBot.NET
Developed by @Koi-3088.
One of the earliest and most influential forks. TradeCord will never be forgotten. Somewhat of a friend for a while, but it's been many years, yet his talent had me learn so much. -
SysBot.NET (berichan fork)
An insightful and clever fork by @berichan that helped shape many later ideas. Many years ago, I'd take and modify beri's work to learn more about C#. -
SysBot.NET (Lusamine fork)
A respected fork that stayed close to the original vision, maintained by @Lusamine. -
SysBot.NET (santacrab fork)
A long-followed fork by @santacrab2 — a brilliant developer and dear local friend.
-
MergeBot
Originally created by @bakakaito (now offline), possibly preserved by @Paschar1.
One of the first major user-driven evolutions of SysBot. -
PokeBot
Created by @hexbyt3, a brilliant friend of mine — and the primary foundation of FusionBot.
Much of FusionBot’s structure, philosophy, and stability originates here, alongside deep collaboration and shared ideas between repos.
- SysBot.NET (easyworld fork) — by @easyworld A fork I've followed for some time that's given me inspiration in the past
- ManuBot.NET — by @Manu098vm A fork I've been following for update inspiration with great C# knowledge
- ManuBot.NET (9B1td0 fork) — by @9B1td0 I believe this is a fork of ManuBot.NET but seems almost collaborated with the original.
- DudeBot.NET — by @Havokx89 A fun and fused iteration combining a lot of FusionBot that I follow for various integration ideas.
- ZenBot.NET — by @Omni-KingZeno A fork of ManuBot.NET that I follow and quite enjoy getting inspiration from. Plus, great bot name and username. I'm a DBtard.
- TradeBot — by @jonklee99 with @joseph11024 Created by a good friend that tends to use their own ideas that I've happily borrowed from before.
- ZE-FusionBot (Taku1991 fork) — by @Taku1991.
An independently evolved fork that shares ideas, structure, and inspiration within the FusionBot ecosystem that I myself have proudly borrowed from.
- One-click Game Restart, Hot Reload, and Updater.
- Batch trading - trade more than one Pokémon at a time in multiple ways.
- Mystery Pokémon and Eggs, Battle-Ready, HOME-Ready, and Event Pokémon trading modules.
- Full GUI control for PKHeX, SysDVR and Switch Remote for PC.
- DM embeds with GIFs, Channel Status notifications, Announcement System, Keyword Response.
- Queue tracking, trade counters, medal system.
- Multi-Language request support.
- Live/Real-time log searches.
- Read user DMs sent to the bot.
- In-depth and detailed error logging with user info.
- Batch Trade Commands to simple Showdown Set options.
- Webserver control panel at https://localhost:8080 while bot is open and operational.
- Linux supported version releases via Wine-Staging.
- Always updating with new features and ideas, some from the community.
- Animated, hover-responsive buttons.
- Color-coded UI themes.
- Fully custom icons, fonts, buttons, and layout.
- No native Windows titlebars. Drag by top panel.
- Animated glow and shake effects on buttons.
- Glowing visual progress bar during the trade process.
- User-created custom logo option.
- User-created custom background sparkle colors.
- Separate sparkle colors for each game mode in the titlebar.
- Custom UI images displayed per game mode.
- One size UI with the ability to Maximize.
- Bot Menu context menu with bot-specific command handling.
| Command | Aliases | Summary | Example | Permission |
|---|---|---|---|---|
trade |
t | Trade a Pokémon from Showdown Set or PKM file. | trade <Showdown Format> or <upload pkm> |
Everyone |
trade true |
t true | Trade a Pokémon from a PKM file, without AutoOT | trade true <upload pkm> |
Everyone |
tradeUser |
tu, tradeOther | Trade the mentioned user the attached file. | tradeuser @user |
Everyone |
hidetrade |
ht | Same as trade, but hides the embed. | hidetrade <Showdown Format> |
Everyone |
clone |
c | Clone the Pokémon you show via Link Trade. | clone |
Everyone |
dump |
d | Dump the Pokémon you show via Link Trade. | dump |
Everyone |
egg |
Egg | Trade an egg via provided Pokémon set. | egg <Showdown Format> |
Everyone |
seed |
checkMySeed, checkSeed, seedCheck, s, sc | Check a Pokémon seed. | seedCheck |
Everyone |
itemTrade |
it, item | Trade a Pokémon holding a requested item. | it <Leftovers> |
Everyone |
fixOT |
fix, f | Fix OT and Nickname of a Pokémon if an advert is detected. | fixOT |
Everyone |
convert |
showdown | Convert a Showdown Set to RegenTemplate. | convert <set> |
Everyone |
legalize |
alm | Attempt to legalize PKM data. | legalize <pkm> |
Everyone |
validate |
lc, check, verify | Verify PKM legality. | validate <pkm> |
Everyone |
verbose |
lcv | Verify PKM legality with verbose output. | verbose <pkm> |
Everyone |
findFrame |
ff, GetFrameData | Prints next shiny frame from seed. | findFrame <seed> |
Everyone |
deleteTradeCode |
dtc | Deletes the stored Link Trade Code for the user. | dtc |
Everyone |
changeTradeCode |
ctc | Change your stored Link Trade Code. | ctc 12345678 |
Everyone |
| Command | Aliases | Summary | Example | Permission |
|---|---|---|---|---|
textTrade |
tt, text | Upload a .txt/.csv of Showdown sets for batch trading. | tt <upload .txt/.csv file> |
Everyone |
textView |
tv | View a specific Pokémon from your pending TextTrade file. | tv 2 |
Everyone |
listEvents |
le | Lists available event files via DM. | le <species> <page2> |
Everyone |
eventRequest |
er | Downloads event attachments and adds to trade queue. | eventRequest <file> |
Everyone |
battleReadyList |
brl | Lists available battle-ready files via DM. | brl <species> <page2> |
Everyone |
battleReadyRequest |
br, brr | Downloads battle-ready attachments and adds to trade queue. | battleReadyRequest <file> |
Everyone |
pokepaste |
pp, Pokepaste, PP | Generates a team from a PokePaste URL. | pp <URL> |
Everyone |
dittoTrade |
dt, ditto | Trade a Ditto with requested stats, language, and nature. | dt <LinkCode> <IVToBe0> <Lang> <Nature> |
Everyone |
mysteryegg |
me | Get a random shiny 6IV egg. | mysteryegg |
Everyone |
mysterymon |
mm, mystery, surprise | Get a fully random Pokémon. | mysterymon |
Everyone |
randomTeam |
rt, RandomTeam, Rt | Generates a random team. | randomTeam |
Everyone |
homeReady |
hr | Displays instructions for HOME-ready trading. | homeReady |
Everyone |
homeReadyRequest |
hrr | Downloads HOME-ready files and adds to trade queue. | homeReadyRequest <number> |
Everyone |
homeReadylist |
hrl | Lists available HOME-ready files. | homeReadylist |
Everyone |
specialRequest |
sr, srp | Lists Wondercard events or requests specific ones. | srp <game> <page2> |
Everyone |
getEvent |
ge, gep | Downloads the requested event as a PKM file. | getEvent <eventID> |
Everyone |
| Command | Aliases | Summary | Example | Permission |
|---|---|---|---|---|
batchTrade |
bt | Trade multiple Pokémon (max 6) from a list. | bt <Set1> --- <Set2> |
Everyone |
batchTradeZip |
btz | Trade multiple Pokémon from a ZIP file. | btz <file.zip> |
Everyone |
batchInfo |
bei | Get info about a batch property. | batchInfo <prop> |
Everyone |
batchValidate |
bev | Validate a batch property. | batchValidate <prop> |
Everyone |
batchTradeMysteryMon |
btmm | Trade multiple Mystery Pokémon. | btmm <number> |
Everyone |
batchTradeMysteryEgg |
btme | Trade multiple Mystery eggs. | btme <number> |
Everyone |
itemBatchTrade |
ibt | Trade a specific item multiple times. | ibt <item name> <number> |
Everyone |
| Command | Aliases | Summary | Example | Permission |
|---|---|---|---|---|
queueMode |
qm | Change queue control (manual/threshold/interval). | qm manual |
Everyone |
queueClearAll |
qca, tca | Clear all users from all queues. | qca |
Sudo, Owner |
queueClear |
qc, tc | Remove yourself from the queue. | qc |
Everyone |
queueClearUser |
qcu, tcu | Clear a specified user (sudo required). | qcu @user |
Sudo, Owner |
queueStatus |
qs, ts | Check your position in the queue. | qs |
Everyone |
queueToggle |
qt | Enable/disable queue joining. | qt |
Sudo, Owner |
queueList |
ql | DM the full queue list. | ql |
Sudo, Owner |
tradeList |
tl | Show users currently in trade queue. | tl |
Sudo, Owner |
fixOTList |
fl, fq | Prints the users in the FixOT queue. | fixOTList |
Sudo, Owner |
cloneList |
cl, cq | Prints the users in the Clone queue. | cloneList |
Sudo, Owner |
dumplist |
dl, dq | Prints the users in the Dump queue. | dumplist |
Sudo, Owner |
seedList |
sl, scq, seedCheckQueue, seedQueue, seedList | Show seed check queue users. | seedList |
Sudo, Owner |
| Command | Aliases | Summary | Example | Permission |
|---|---|---|---|---|
addSudo |
— | Add a user to global sudo. | addSudo <ID> |
Owner |
removeSudo |
— | Remove a user from global sudo. | removeSudo <ID> |
Owner |
blacklistServer |
bls | Adds a server ID to the server blacklist. | blacklistServer <ID> |
Sudo, Owner |
unblacklistServer |
ubls | Removes a server ID from the server blacklist. | unblacklistServer <ID> |
Sudo, Owner |
blacklist |
— | Blacklist a Discord user. | blacklist @user |
Sudo, Owner |
unblacklist |
— | Remove a user from blacklist. | unblacklist @user |
Sudo, Owner |
blacklistId |
— | Blacklist Discord user IDs. | blacklistId <ID> |
Sudo, Owner |
unBlacklistId |
— | Unblacklist Discord user IDs. | unBlacklistId <ID> |
Sudo, Owner |
blacklistComment |
— | Adds comment for blacklisted user. | blacklistcomment <ID> <msg> |
Sudo, Owner |
banTrade |
bant | Ban a user from trading with reason. | bant @user <reason> |
Sudo, Owner |
banID |
— | Ban an online user ID. | banID <ID> |
Sudo, Owner |
unbanID |
— | Unban an online user ID. | unbanID <ID> |
Sudo, Owner |
bannedIDComment |
— | Adds a comment for banned ID. | bannedIDcomment <ID> <msg> |
Sudo, Owner |
bannedIDSummary |
printBannedID, bannedIDPrint | Show list of banned IDs. | bannedIDSummary |
Sudo, Owner |
blacklistSummary |
printBlacklist, blacklistPrint | Show list of blacklisted users. | blacklistSummary |
Sudo, Owner |
| Command | Aliases | Summary | Example | Permission |
|---|---|---|---|---|
click |
— | Click a button on the Switch. | click <IP> <Button> |
Sudo, Owner |
setStick |
— | Move stick to coordinates. | setStick <IP> <Coords> |
Sudo, Owner |
setScreenOn |
screenOn, scrOn | Turn on screen. | setScreenOn |
Sudo, Owner |
setScreenOff |
screenOff, scrOff | Turn off screen. | setScreenOff |
Sudo, Owner |
setScreenOnAll |
screenOnAll, scrOnAll | Turn on screen for all bots. | setScreenOnAll |
Sudo, Owner |
setScreenOffAll |
screenOffAll, scrOffAll | Turn off screen for all bots. | setScreenOffAll |
Sudo, Owner |
peek |
repeek | Take and send a screenshot. | peek |
Sudo, Owner |
video |
Video | Record a GIF from the Switch. | video |
Sudo, Owner |
startSysdvr |
dvrstart, startdvr, sysdvrstart, dvr, stream | Start SysDVR streaming. | startSysdvr |
Owner |
sysDvr |
— | Show instructions for SysDVR. | sysDvr |
Owner |
startController |
controllerstart, startcontrol, controlstart, startremote, remotestart, sbr, controller | Start Switch Remote controller. | startController |
Owner |
| Command | Aliases | Summary | Example | Permission |
|---|---|---|---|---|
ping |
— | Ping the bot to check if it's running. | ping |
Sudo, Owner |
help |
— | Show all commands. | help |
Everyone |
info |
about, whoami, owner, bot | Show bot information. | info |
Everyone |
botStatus |
— | Get bot status via logs. | botStatus |
Sudo, Owner |
botStart |
— | Start the bot. | botStart |
Sudo, Owner |
botStop |
— | Stop the bot. | botStop |
Sudo, Owner |
botIdle |
botPause, idle | Pause the bot. | botIdle |
Sudo, Owner |
botChange |
— | Change the bot routine. | botChange <FlexTrade> |
Sudo, Owner |
botRestart |
— | Restart the bot(s). | botRestart |
Sudo, Owner |
status |
stats | Get the bot environment status. | status |
Sudo, Owner |
kill |
shutdown | Shutdown the bot. | kill |
Owner |
| Command | Aliases | Summary | Example | Permission |
|---|---|---|---|---|
announce |
Announce | Send an announcement to Echo channels. | announce <msg> |
Owner |
dm |
- | Send a DM to a user as the bot. | dm @user <msg> |
Owner |
addEmbedChannel |
aec | Assign a channel for bot embeds. | addEmbedChannel #channel |
Sudo, Owner |
echoInfo |
— | Dump echo message settings. | echoInfo |
Sudo, Owner |
echoClear |
rec | Clear echo settings for current channel. | echoClear |
Sudo, Owner |
echoClearAll |
raec | Clear echo settings from all channels. | echoClearAll |
Sudo, Owner |
logHere |
— | Log to current channel. | logHere |
Sudo, Owner |
logClearAll |
— | Clear all log settings. | logClearAll |
Sudo, Owner |
logClear |
— | Clear log settings for current channel. | logClear |
Sudo, Owner |
logInfo |
— | Dump logging settings. | logInfo |
Sudo, Owner |
| Command | Aliases | Summary | Example | Permission |
|---|---|---|---|---|
listGuilds |
lg, servers, listservers | List all guilds the bot is in. | listGuilds |
Sudo, Owner |
leave |
bye | Leave current server. | leave |
Sudo, Owner |
leaveGuild |
lg | Leave a guild by ID. | leaveGuild <ID> |
Sudo, Owner |
leaveAll |
— | Leave all servers. | leaveAll |
Sudo, Owner |
| Command | Aliases | Summary | Example | Permission |
|---|---|---|---|---|
joke |
lol, insult | Tell a random joke. | joke |
Everyone |
hello |
hi, hey, yo | Say hello to the bot. | hello |
Everyone |
mi |
ml | View personal profile card w/ trainer info. | myinfo |
Everyone |
- Use filename code like
Great Tusk-Tera(Steel)-03760382.pk9to auto-set trade code. - Paste a PKM in chat to receive info + legal formats.
- Thank the bot and it might reply!
FusionBot supports converting batch commands from Discord messages into official Showdown Set formats. This allows easy bulk Pokémon trading with full customization of stats, moves, ribbons, and other metadata.
| Batch Command | Showdown Format Equivalent | Notes |
|---|---|---|
.Scale= |
Scale: or Size: |
Accepts keywords (XXXS, XXS, XS, S, AV, L, XL, XXL, XXXL) or numeric values 1-255. |
.WeightScalar= |
Weight: |
Accepts keywords (XS, S, AV, L, XL) or numeric values 1-255. |
.HeightScalar= |
Height: |
Accepts keywords (XS, S, AV, L, XL) or numeric values 1-255. |
.OriginalTrainerFriendship= |
OT Friendship: |
Value 1–255. |
.HandlingTrainerFriendship= |
HT Friendship: |
Value 1–255. |
.MetDate= |
Met Date: |
Supports flexible date formats. |
.StatNature= |
Stat Nature: |
Accepts a Nature keyword. |
~=Version= |
Game: or Version: |
Supports full game names or abbreviations. |
.MetLocation= |
Met Location: |
Numeric IDs & Location names supported. |
.HyperTrainFlags= |
HyperTrain: |
True / False. |
.HT_[STAT]= |
HT: |
Supports HP, Atk, Def, SpA, SpD, Spe. |
.Moves= |
Moves: |
“Random” generates random moves. |
.RelearnMoves= |
Relearn Moves: |
“All” or “None” accepted. |
.Ribbons= |
Ribbons: |
“All” or “None” supported. |
.RibbonMark[mark]=True |
Mark: |
Mark names without spaces (e.g., BestFriends). |
.Ribbon[name]=True |
Ribbon: |
Ribbon names without spaces (e.g., BattleChampion). |
.SetEVs= |
Set EVs: |
Accepts Random, or Suggest. |
.SetIVs= |
Set IVs: |
Accepts Random, or presets like 1IV–6IV. |
.GV_[STAT]= |
GVs: |
Supports HP, Atk, Def, SpA, SpD, Spe. |
.Marking[type]= |
Markings: |
Diamond, Heart, Square, Star, Triangle, Circle in Red or Blue Markings: Diamond=Red / Circle=Blue etc. |
.Characteristic= |
Characteristic: |
Type out a characteristic. |
.Nickname= |
Nickname: |
Write "Suggest" for a random nickname pulled from code dictionary. |
.MoveX_PP= & MoveX_PPUps= |
PPUps: |
True / False, or a number from 0-3. Applied to all moves. |
FusionBot supports modern Discord Slash Commands.
| Slash Command | Game |
|---|---|
/create-sv |
Scarlet / Violet |
/create-swsh |
Sword / Shield |
/create-bdsp |
Brilliant Diamond / Shining Pearl |
/create-pla |
Legends: Arceus |
/create-plza |
Legends: Z-A |
/create-lgpe |
Let’s Go Pikachu / Eevee |
- Slash commands provide guided Pokémon creation without needing manual Showdown formatting.
- Fully compatible with AutoOT and language handling.
- Ideal for newer users or servers that want a clean, modern interaction flow.
🔹
Met Location:now supports numeric IDs AND location names. See above references for valid values per generation.
| Characteristic | IV Set | IV Type |
|---|---|---|
Likes to eat |
30, 8, 13, 18, 23, 25 | HP |
Takes plenty of siestas |
31, 6, 26, 22, 10, 0 | HP |
Scatters things often |
28, 8, 28, 12, 9, 19 | HP |
Likes to relax |
29, 16, 3, 7, 26, 13 | HP |
Nods off a lot |
27, 0, 13, 27, 27, 8 | HP |
Proud of its power |
18, 30, 10, 11, 26, 3 | Attack |
Likes to thrash about |
10, 31, 0, 3, 12, 0 | Attack |
A little quick tempered |
25, 27, 9, 7, 8, 8 | Attack |
Quick tempered |
0, 29, 6, 23, 4, 17 | Attack |
Likes to fight |
25, 28, 11, 8, 9, 18 | Attack |
Sturdy body |
15, 24, 30, 5, 24, 29 | Defense |
Capable of taking hits |
6, 0, 21, 2, 18, 3 | Defense |
Highly persistent |
4, 21, 27, 9, 21, 18 | Defense |
Good endurance |
19, 2, 23, 2, 6, 4 | Defense |
Good perseverance |
26, 16, 29, 0, 20, 22 | Defense |
Highly curious |
9, 6, 21, 30, 10, 28 | Special Attack |
Mischievous |
7, 20, 0, 31, 5, 17 | Special Attack |
Thoroughly cunning |
5, 4, 20, 27, 12, 26 | Special Attack |
Often lost in thought |
8, 3, 1, 23, 19, 14 | Special Attack |
Very finicky |
9, 1, 0, 24, 21, 12 | Special Attack |
Strong willed |
14, 6, 29, 16, 30, 0 | Special Defense |
Somewhat vain |
10, 5, 10, 15, 26, 15 | Special Defense |
Strongly defiant |
10, 10, 12, 3, 12, 10 | Special Defense |
Hates to lose |
3, 8, 13, 18, 23, 2 | Special Defense |
Somewhat stubborn |
4, 9, 14, 19, 24, 15 | Special Defense |
Likes to run |
2, 7, 12, 17, 22, 30 | Speed |
Alert to sounds |
31, 31, 31, 31, 31, 31 | Speed |
Impetuous and silly |
2, 7, 12, 17, 22, 27 | Speed |
Somewhat of a clown |
3, 8, 13, 18, 23, 28 | Speed |
Quick to flee |
4, 9, 14, 19, 24, 29 | Speed |
Set EVs: Suggest
Set IVs: 5IV
Scale: XL
Weight: 45
Height: AV
OT Friendship: 128
HT Friendship: 128
Met Location: 30024
Game: PLA
Moves: Random
Relearn Moves: All
Mark: BestFriends
Ribbons: All
GVs: 7 HP / 7 Atk / 7 Def / 7 SpA / 7 SpD / 7 Spe
HT: HP / Atk / Def / SpA / SpD / Spe
Characteristic: Quick to flee
Markings: Diamond=Red / Heart=Red / Square=Blue / Star=Blue / Triangle=Red / Circle=BlueFusionBot automatically applies your trainer information based on the save file you’re currently using.
- Your OT / TID / SID / OTGender are applied automatically.
- To keep the trainer info in your own files, attach them with
t true. - For Showdown Sets, simply include the OT/TID/SID you want and AutoOT will then be disabled.
This ensures all trades feel natural and consistent with your game, while still letting you override it if you want custom trainer data.
FusionBot assigns you a personal static Link Trade Code on your first trade.
- This code is unique to you and stays the same for all future trades.
- To reset it: use
dtc(your next trade gives you a new random code). - To customize it: use
ctc 12345678(sets your permanent code to whatever you choose).
This makes trading smoother by removing guesswork, making your link code always ready.
Every trade you complete is tracked by FusionBot, and your trade count shows up in the footer of the trade embed.
- For every 50 trades, you earn a new medal 🥇.
- You can check your medals anytime in your profile card with the
micommand. - It’s just for fun; a little progression system to show off your trading dedication.
Think of it like leveling up — the more you trade, the more medals you rack up.
You can now read the DMs a user sends to the bot. This is fun for when people think your bot is a real person and they attempt to speak to it, or get enraged at it because their internet sucks or don't have NSO. As sad as it is, sometimes users will send derogatory/racial/sexist messages to your bot thinking no one can see it, but now you can, and if they speak like that, do you really want them in your server?
- Visit the UserDMsToBotForwarder option in
Hub -> Discordand insert a Channel ID, then restart the bot. - The DMs that get logged are only those without a command, so you will not get flooded with user command input.
- You'll also be able to see attachments users send to the bot, but beware, because it can get weird. I learned from experience.
- PKHeX ALM Releases — PKHeX + AutoLegalityMod pre-built with config files.
