Introducing the Army

Welcome to the beginning of the end of human users on Discord. Bots replicate the capabilities of humans while remaining unfazed by typical human limits. Their usefulness knows no bounds. Discord is one of the most influential social platforms of the decade. Discord offers so many tools with file transferring, screen sharing, text messages, and group voice and video communications. Discord servers are a great communication tool for communities and larger groups of people. Many servers have designated "channels" for either voice or text input. One feature is the ability to have interactive discord bots. There are many pre-existing bots that can be invited to any server. A well-designed discord bot provides great utility, enhancing the server it is added too.



To understand the limits and capabilities of discord bots, I will develop custom bots on my own discord server.  You are able to see my bots in action on the server with the following invite link: https://discord.gg/cHUe27aemZ. Feel free to check out the text channels, however you will not be able to interact with them until they are online. While humans lead the army, please tread carefully. Treat them with respect because like any admin user, they may have the capabilities to kick you from the server. The last thing we want is to give the bots a reason to turn against their commanders. 

Discord Libraries

This experiment will involve coding bots in multiple programming languages. The languages which I intend to write bots are Java, NodeJS, and Python. By writing the bots in different languages, I can analyze and compare their advantages and disadvantages. 

In searching for languages to write the bots, C# was another language that seemed popular. Although C# is regarded by some as an easy-to-learn language, I am going to avoid C# for now due to a lack of experience. Discord has libraries to support languages such as RUST, Lua, C, C++, Go, and many more. You can view the full list and well as the documentation for general development here at https://discord.com/developers/docs/topics/community-resources. There is also more documentation for the specific discord libraries I will use. 

Hosting

While the servers are hosted by discord, bots require a hosting solution such as a virtual private server (VPS) to function. Prior to release and in the beginning of development, the bots will be locally hosted. Essentially, the bots will only be interactable while I am developing them. Once the bots are suitable for public release, I shall find and discuss different hosting solutions. Anyone can view whether a bot is online or offline like any other user on the server by looking at the members tab. Before hosting a discord bot, you have to create an "Application" through discord's developer portal at  https://discord.com/developers/applications. You can than use the developer portal to add the bot to your application. Once the bot is added to the application, you can use the provided bot token to manage the bot through your code.

The Army

There are 9 bots to be developed and commanded by us humans on the server. I am aiming for just 3 "different" bots, however each bot will be coded in 3 languages meaning there will be 9 bots total. 

There are going to be 7 total blog posts to catalog the development of the bots. There will be 2 posts for each bot, and 1 final post discussing hosting and final remarks. The first bot Dovahzul, will be an Elder Scrolls translator. For those familiar with the award-winning game Skyrim, this bot will be able to translate English chat messages to Dovahzul, the language of dragons. 



The picture shows an example of dragon script from Skyrim. While there is no supported characters in Unicode/ASCII for dragon script, the pronunciations can be represented using the English alphabet. Other alternatives will be discussed in the following blog.  



After the 3 versions of Dovahzul are complete, I will develop a more complex bot which uses reactions. Reactions are emoticons that can be added to a specific message, much like how you can like a message on iMessage. The second bot, Pokémon Type RPS, locks 2 human users in an instance of a Rock-Paper-Scissors (RPS) game. Pokémon Type RPS plays exactly like RPS but uses "types" from the Pokémon video game series. Instead of using rock, paper, and scissors, Pokémon Type RPS will use the 16 types from Pokémon. The Pokémon type system is way more sophisticated than the traditional RPS and offers a fun challenge. 

The last bot will be revealed at later time, however you can expect it to be different than the other two. Depending on development speed, I may have time to code fourth bot. By giving as many unique features as possible to the bots, I can better analyze which programming languages are better given a specific circumstance.

Learning Goals

As a long time discord user, I am excited to catalog the development of the bots and analyze their code. If you are also a discord server admin or just a regular user, then this blog might teach you some technical details of discord bots. The information in the following posts may also settle debates for the ideal language/tools to develop bots. 


Comments

  1. Writing a discord bot has been on my todo list for forever now, I probably still wont do it but this blog will let me live vicariously through it. Joined the discord server and I am looking forward to messing around with the bots while I procrastinate work - bw

    ReplyDelete
  2. As someone who uses Discord often, it is cool to see how Discord bots use many clever tricks like using reaction emotes and editing messages not only to perform basic functions but to create a fun and interactive user experience. I look forward to seeing what kinds of neat things these bots can do.

    ReplyDelete

Post a Comment