Merlin

Basic Info
Merlin (originally named "KCCS Official") is a bot that is developed by windowsboy111. It was originally coded in python, but later also Node.js, using libraries discord.py and discord.js. It aims to perform actions that Dyno cannot satisfy.

Codename
The name Merlin is a reference to the Microsoft Windows Whistler Assistance back in 2000 and 2001. It is still being kept in XP, but its main role has been replace by the question mark assistant. Users can still see the present of Merlin if you replace Rover the search dog.

Originally the bot was named "KCCS Official" because windowsboy111 thinks that the bot is made for KCCS Official guild only. However, due to having the same name as the discord server, it was renamed to Merlin on 15th May 2020.

Usage
Merlin can be divided into 2 branches:
 * 1) Python (discord.py) branch; [prefix: /  ]
 * 2) Node.js (discord.js) branch; [prefix: $ ]

Cogs
Command Catogories (will be referred to cogs below) has been made at the very start of the development, after making the /test command. Merlin (python branch) consist of the following cogs:

Debug
Commands:

Fun
Commands:

Manage
Commands:

Utilities (utils)
Commands:


Commands:

Discord.js does not support cogs
At least windowsboy111 doesn't think so. He said that he tried to reorganized the /$help command output (discord.js branch) but he can do nothing about that.

Commands:
 * args-info
 * avatar
 * dm
 * help
 * tutor_choco
 * ping
 * reload
 * ban
 * kick
 * zoom
 * tutor_zoomof
 * buy
 * bal
 * shop
 * tf
 * lb

Merlin is annoying?
Siriusmart, the server owner, once stated that the bot is super annoying. windowsboy111 said that there are a few very good reason to think that Merlin is annoying:

Text to speech
the difference between /send and /say command is that /say contains text to speech. Members often uses /say command accidentally because of Dyno's ;say command.

Verbose mode
Verbose mode is that the bot logges all the info it is working on which is not neccessary. That decreases the performance of the bot.

This "feature" has been deprecated on 12th May 2020 as windowsboy111 made a poll about that. (Officially deprecated on 15thMay 2020, the date that the poll ends.)

Keeping the issuing message
Issuing message are messages that the users call functions of the bot. Issuing commands are the basic way to interact with discord bots. e.g.: /say hello is an issuing command.

By default, Dyno does not deletes the issuing command too, you have to specify it with: {delete} windowsboy111 likes to keep the issuing command so that when users get the arguments wrong when issuing commands, they can copy, paste, have a minor edit and re-issue it again.

However, on 13th May 2020, windowsboy111 created a poll asking for if members like the bot to delete the issue command, and it passed. On that day, keeping the issuing message / command has been deprecated.

Consoles
In order to make devs / programmers happy (like Benz and windowsboy111), Merlin provides a system that let's users / members to run commands directly on discord.

Python
The #python channel runs the commands users inputted by using exec statement. It works like a charm. Except users try to crash the bot by creating python fork bombs... Oh yeah it does have a fork bomb detecting system.

Node JS
The #nodejs channel runs the commands users inputted using eval. Actually, this features only uses a few lines of code. var F=new Function (msg);

Out of Box Experience (OOBE)
windowsboy111 plans to add Out of Box Experience to Merlin. The name is a reference to the setup stage in Microsoft Windows. In fact, Merlin was originally the setup / OOBE assistance back in 2000 Windows Whistler.

TL;DR version: @client.event on_member_join

Node.js console
The main reason why part of the bot is coded in Node.js is the fact that members would like to have a node.js (JavaScript) console. windowsboy111 is planning to create one, just like Python.

/sandbox
One of the major cons of Merlin is that it is not as stable as Dyno and MEE6. The idea of /sandbox command is to run a command in "safe mode" so that the bot won't crash and user can get more details of an error messages and exit codes.

/sudo
Yeah it is a bug technically, not a feature, but he is planning to fix it.

Versioning / releasing
Yes, although the bot is not for public use, but still, having a proper CHANGELOG.md, README.md looks better. Proper releases and versions too.

Where can I check out the discord.js branch of Merlin?
You can't. windowsboy111 sometime is stupid. He can't figure out how to rename the master branch to discord.py and create a new discord.js branch and upload those source codes to github. When you meet him, teach him if you know how.

Can I contribute to Merlin?
Sort of. At github.

What if I have other questions?
Github issuing is your friend. :)