# Sweetbot A simple Discord bot for pulling character images/stats/nightly rankings posts, using the maplestory.io API to build images. This bot was originally designed to work with a Cosmic v83 database and EXP table. If you're using a different source, you may need to change these. ## Usage Clone the repository with your preferred method: `git clone https://git.bitbouquet.network/Sweetgum/Sweetbot.git` Edit env.example and update the following environment variables: Discord: ``` DISCORD_TOKEN = "your discord bot token" DISCORD_CLIENT_ID = "your application client ID here" DISCORD_GUILD_ID = "your guild ID here" BOT_PREFIX = ! (change this if you'd like to use something other than '!' to call the bot) RANKINGS_CHANNEL_ID = "your rankings channel ID" ``` Database: ``` DB_HOST = "localhost" (Change this if you're not running the bot on the same database host) DB_PORT = 3306 (Change this if your database uses a different port) DB_USER = "your db user" DB_PASSWORD = "your db password" DB_NAME = cosmic (Change this if you've changed your database name, or if using a different source) ``` Copy env.example to a .env for Node to use your configuration. Install dependencies & run: ``` npm install npm start ``` ## Reccommendations It is NOT ADVISED to use the root user for the database when running this bot. Create a minimum-permissions service user instead. Run the following commands in a MySQL shell: ``` CREATE USER 'service_user'@'%' IDENTIFIED BY 'your_password_here'; GRANT SELECT ON cosmic.characters TO 'service_user'@'%'; GRANT SELECT ON cosmic.inventoryitems TO 'service_user'@'%'; FLUSH PRIVILEGES; ``` `'@''%"` allows for connections from any host. If your bot runs on the same server, it's reccommended to limit it to 127.0.0.1/localhost. It is reccommended to run the bot as a system service, so it continues to run once you exit the shell. It will also log activity & console output to the journal. For any systemd-based Linux distro, do the following: Create a systemd service file: `sudo nano /etc/systemd/system/sweetbot.service` Use this template, adjusting the paths to match where your bot runs: ``` [Unit] Description=Sweetbot After=network.target [Service] Type=simple User='your_linux_user_here" WorkingDirectory=/your/sweetbot/directory ExecStart=/usr/bin/node /your/sweetbot/directory/bot.js Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target ``` Note: The node.js binary may exist in a different directory depending on your OS. Use `which node` to determine that. Enable and start it: ``` sudo systemctl daemon-reload sudo systemctl enable sweetbot sudo systemctl start sweetbot ``` ## Credits - Lynx: Providing information on interacting with maplestory.io - maplestory.io: y'all are the goats!!! ## Extra Information Creating a Discord bot is a fairly simple process. For more information on how to create a Discord bot/application, please visit https://docs.discord.com/developers/quick-start/getting-started