Discord bot that performs various functions.

Overview

rikka-bot Support me on Patreon!

A Discord bot that performs various functions.

Python 3.6 Discord Bots Discord Bots

Table of Contents

  1. Commands
  2. In The Works
  3. Special Thanks

Commands

Right now, this bot's prefix is ;.

Main Commands

Utility Commands

  • @mention help - Returns a command list, along with your server's prefix.
  • ;help - Returns a command list.
  • ;info - Returns information about the bot.
  • ;paypal - Returns donation link to contribute to server hosting.
  • ;vote - Returns this server's vote link on discordbots.org.
  • ;clever (text) - Returns the cleverbot response to the given text.
  • ;gizoogle (text) - Translates a given text with gizoogle.
  • ;translate (text) - Translates the specified text to English.
  • ;suggest (suggestion) - Adds a completely anonymous suggestion to better the bot.
  • ;quickvote (vote) - Creates a message with thumbs up and thumbs down, in a pretty text embed.
  • ;sayd (message) - Allows you to say an anonymous message by saying what you tell it to, and then deleting your message. Prevents @everyone, of course.
  • ;wolfram (query) - Queries a response to Wolfram Alpha.

Admin Commands

  • ;prefix (prefix) - Changes the prefix to a set custom prefix. (Must be admin)
  • ;clear (number) - Clears a set number of messages from the given channel. (Must have manage message permission)
  • ;clear (user) - Clears any messages authored by the specified user in the channel. (Must have manage message permission)
  • ;mute / ;unmute (user) - Mutes/unmutes specified user. (Must have manage message permission)
  • ;kick (user) - Kicks the specified user. (Must have kick permission)
  • ;ban (user) - Bans the specified user. (Must have ban permission)
  • ;add (points) (user(s)) - Adds a set number of points to mentioned user(s). (Must be admin)
  • ;subtract (points) (user(s)) - Subtracts a set number of points from mentioned user(s). (Must be admin)

Self-Assignable Roles

NOTE: In order to do this, Rikka must be placed above the users you would like to enable assigning to. Failure to do so will fail to assign the roles.

Rikka has a self-assignable roles system. If it is enabled for your server, you can create roles to assign yourself and other users. For these commands to work, the role names must match perfectly.

Enabling/Disabling/Listing

  • ;iamlist - Lists the assignable roles.
  • ;assign enable (role name) - Enables assignability for the given role. (Must have Manage Roles permission)
  • ;assign disable (role name)- Disables assignability for the given role. (Must have Manage Roles permission)

Assigning/Unassigning Roles

  • ;iam (role name) - Assigns yourself the role.
  • ;iamnot (role name) - Unassigns yourself the role.

Color Role System

NOTE: In order to do this, Rikka must be placed above the roles whose colors you would like to override. Failure to do so will just create and assign the role without any effect.

Rikka has a color role system. If it is enabled for your server, you can set your own color from the image below.

Color Chart

Setup

Setup requires manage roles permission.

  • ;colors (enable/disable) - enables or disables the color role mode for your server.

Usage

  • ;color (color) - Sets your color to the specified color.
  • ;color reset - Removes all of your color roles, resetting you to your original color.

Economy System

Rikka's economy system consists of a global leaderboard. Currently, you can get points in two ways: Getting questions right with the ;trivia command, and collecting points daily.

  • ;score - Displays your score, or another user's score, globally.
  • ;collect daily - Gets your daily collections.
  • ;leaderboard global - View the global leaderboard across all of rikka's servers.
  • ;leaderboard local - View the local leaderboard across all of the users on the current server.
  • ;give (points) (user) - donate points to another user.

Fun Commands

  • ;insult (user) - Sends a random insult to the given user.
  • ;ramsay - Returns a random Gordon Ramsay quote.
  • ;gay - no u
  • ;rate (thing to rate) - Rates whatever you tell it to rate on a scale of 1-10.
  • ;ping - For that annoying person who keeps @everyoneing.
  • ;beemovie - Returns a random bee movie quote.

MAL Commands

  • ;mal (anime) - Returns the result of the anime search.
  • ;mal m/(manga) - Returns the result of the manga search.
  • ;malqa (anime) - Returns the result of the anime search.
  • ;malqm (manga) - Returns the result of the manga search.
  • ;mal id a/(anime id) - Returns the result of the anime ID search.
  • ;mal id m/(manga id) - Returns the result of the manga ID search.

XKCD Commands

  • ;xkcd - Returns a random XKCD comic.
  • ;xkcd (number) - Returns a specific XKCD comic.
  • ;xkcd latest - Returns the latest XKCD comic.

Gif Commands

  • ;hello - Says hi.
  • ;hugme - Hugs you.
  • ;hug @user - Hugs the specified user.

Emotes

Note: All emotes are entirely SFW.

  • shocked, smile, hentai, blush, bdsm, rekt, boop, fuckoff, sanic, dreamy, kys

Gelbooru Commands

These commands require the channel to be marked as NSFW.

  • ;gelbooru random - Fetches a random gelbooru post.
  • ;gelbooru latest - Fetches the latest gelbooru post.
  • ;gelbooru tags (tags, comma separated) - Fetches a post that matches the specified tags.

Game Commands

Trivia Commands

  • ;trivia - Returns the help menu for trivia.
  • ;ask - Returns a randomly selected question.
  • ;a (attempt) - Tests the given attempt to see if it is correct. If it is correct, you are granted a point.
  • ;reveal - Reveals the answer, removing the ability to score for that specific question.

Casino Commands

  • ;roll - Rolls a die.
  • ;flip - Flips a coin.
  • ;8ball (question) - Tells you the future.
  • ;raffle - Select a random (non-bot) user from your server

Board Functionality

This feature is currently not functional. Sorry!

The board functionality allows popular messages to be posted on a special channel, titled board. To use this functionality, you must first run ;board enable. Afterwards, every message with 3 reactions with the "" will get posted to the board.

In the works

  • Improved, proprietary AI, instead of cleverbot.
  • Aliases for Self-Assignable Roles
  • Minecraft Server Status

Special Thanks

Comments
  • Give Points Command

    Give Points Command

    Implement a ;give points <user> <amount> command with the following spec:

    • If a user's balance >= amount, give amount points to user.
    • If a user's balance < amount, throw an error.
    • Function must use Economy.addPoints and not implement another function.
    enhancement good first issue 
    opened by LeoSaucedo 2
  • XKCD Cog Breaks Program

    XKCD Cog Breaks Program

    When Cogs.Xkcd is included in the cogs for Rikka, this error is thrown:

    Jul 18 22:12:37 ip-172-31-80-202 python[45745]: Traceback (most recent call last):
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/opt/rikka/rikka-bot/.env/lib/python3.8/site-packages/discord/ext/commands/bot.py", line 607, in _load_from_module_spec
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:     spec.loader.exec_module(lib)
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "<frozen importlib._bootstrap_external>", line 848, in exec_module
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/opt/rikka/rikka-bot/Cogs/Xkcd.py", line 10, in <module>
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:     class Xkcd(commands.Cog):
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/opt/rikka/rikka-bot/Cogs/Xkcd.py", line 11, in Xkcd
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:     required_response_fields: list[str] = ['year', 'month', 'day', 'alt', 'num']
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]: TypeError: 'type' object is not subscriptable
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]: The above exception was the direct cause of the following exception:
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]: Traceback (most recent call last):
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/opt/rikka/rikka-bot/robot.py", line 111, in <module>
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:     bot.load_extension(cog)
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/opt/rikka/rikka-bot/.env/lib/python3.8/site-packages/discord/ext/commands/bot.py", line 664, in load_extension
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:     self._load_from_module_spec(spec, name)
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/opt/rikka/rikka-bot/.env/lib/python3.8/site-packages/discord/ext/commands/bot.py", line 610, in _load_from_module_spec
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:     raise errors.ExtensionFailed(key, e) from e
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]: discord.ext.commands.errors.ExtensionFailed: Extension 'Cogs.Xkcd' raised an error: TypeError: 'type' object is not subscriptable
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]: Exception ignored in: <function ClientSession.__del__ at 0x7fed9fa20af0>Jul 18 22:12:37 ip-172-31-80-202 python[45745]: Traceback (most recent call last):
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/opt/rikka/rikka-bot/.env/lib/python3.8/site-packages/aiohttp/client.py", line 314, in __del__
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/usr/lib/python3.8/asyncio/base_events.py", line 1740, in call_exception_handler
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/usr/lib/python3.8/logging/__init__.py", line 1475, in error
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/usr/lib/python3.8/logging/__init__.py", line 1589, in _log
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/usr/lib/python3.8/logging/__init__.py", line 1599, in handle
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/usr/lib/python3.8/logging/__init__.py", line 1661, in callHandlers
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/usr/lib/python3.8/logging/__init__.py", line 954, in handle
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/usr/lib/python3.8/logging/__init__.py", line 1186, in emit
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]:   File "/usr/lib/python3.8/logging/__init__.py", line 1176, in _open
    Jul 18 22:12:37 ip-172-31-80-202 python[45745]: NameError: name 'open' is not defined
    Jul 18 22:12:37 ip-172-31-80-202 systemd[1]: rikka.service: Main process exited, code=exited, status=1/FAILURE
    Jul 18 22:12:37 ip-172-31-80-202 systemd[1]: rikka.service: Failed with result 'exit-code'.
    

    Environment Details:

    Python 3.8.10 (default, Jun  2 2021, 10:49:15)
    [GCC 9.4.0] on linux
    

    We should make sure our changes are consistent with the current python version being used by the bot.

    bug 
    opened by LeoSaucedo 1
  • View Other User's Inventory

    View Other User's Inventory

    Implement ;inv <user> with the following spec:

    • If the parameter mentioned is a valid user, display their inventory.
    • If the parameter is not a valid user, throw an error.
    • Must use existing getInventory functions.
    enhancement 
    opened by LeoSaucedo 1
  • XKCD Command

    XKCD Command

    Implement the XKCD command with the following spec:

    • Command must respond to ;xkcd.
    • If ;xkcd or ;xkcd random is given, return a random XKCD comic.
    • If ;xkcd 123 is given, return a XKCD comic 123, etc.
    • If ;kxcd latest is given, return the lastest XKCD comic.
    • Include image, title, and description in the embed.
    • All calls must be made with aiohttp.
    enhancement good first issue 
    opened by LeoSaucedo 1
  • Answer command sometimes is not interpreted

    Answer command sometimes is not interpreted

    Screenshot_20210717-163108

    The answer command is sometimes not triggered when a user attempts to answer an active trivia question. Normal behavior always prompts a response from the bot, whether it is correct or not, and in the attached example no message was returned.

    We must investigate why the answer isn't returning and what we can do to resolve it.

    bug 
    opened by LeoSaucedo 1
  • ;leaderboard global breaks on non-existent user

    ;leaderboard global breaks on non-existent user

    image Rikka returns this error whenever the user inside of the leaderboard is not valid.

    A try-catch is the easy fix, but there could be another, better fix that removes the null user from the leaderboard, which should be integrated once the sql branch is released.

    bug 
    opened by LeoSaucedo 1
  • Trivia answer attempt is triggered whenever a message starts with ;a.

    Trivia answer attempt is triggered whenever a message starts with ;a.

    In this example, two separate functions are called: image

    There needs to be a way to sort out attempts, perhaps by renaming the attempt call or rewriting the code with the if statements.

    bug 
    opened by LeoSaucedo 1
  • Some insults are grammatically incorrect

    Some insults are grammatically incorrect

    When selecting a random insult with the SFW insult command, the program does not make any effort to be grammatically correct, and uses the "a" article instead of selecting "a" or "an" depending on the word the article is referencing. image

    bug 
    opened by LeoSaucedo 1
  • UnboundLocalError when CleverBot fails

    UnboundLocalError when CleverBot fails

    When CleverBot fails, when returning the "failed" message, it results in an UnboundLocal error. This is because it is sending a new message when it fails, instead of defining "msg" upon its success.

    bug 
    opened by LeoSaucedo 1
  • Change from Deprecated Library and Handle Discord Intents Update

    Change from Deprecated Library and Handle Discord Intents Update

    DBL was obviously deprecated, causing rikka-bot to no longer function. The Discord update messed with a few other things as well with the introduction of Intents. Toppggpy appears to be DBL's successor and seems to run when the proper changes are made.

    I would like some review on this, perhaps maybe a bit more refined pickings of the Intents, but this allows for the bot code to compile and run.

    image

    image

    opened by SirTarragon 1
  • Add opt-out of bot function

    Add opt-out of bot function

    To make a message contents privileged intent to Rikka, we must implement a way for a user to opt out of having their message information read. This should be done via DMing the bot, and we should keep a database of User IDs that have opted out of using Rikka within a server. This requires us having a new database column or table containing this information as well as a function implementation for receiving DMs. This action should be reversible and should be able to be reversed via DMs as well.

    enhancement 
    opened by LeoSaucedo 0
  • Add privacy policy command

    Add privacy policy command

    To request the message content privileged gateway, we need to implement a command that spits out a generic privacy policy.

    This requires:

    • Upload a generic privacy policy to the repository
    • Link to it within Rikka via a command
    enhancement 
    opened by LeoSaucedo 0
  • Eval Command

    Eval Command

    Implement an admin-only ;eval args Command with the following spec:

    • When a user supplies a valid argument, we shall execute the python command that is given and return it in a formatted string.
    • Errors in executing the command should not fail the bot running.
    • This command must be non-ocking.

    Admin-only is to be defined as users contained within a config.json object of trusted people.

    enhancement 
    opened by LeoSaucedo 0
  • Compare only alphanumeric characters for Trivia

    Compare only alphanumeric characters for Trivia

    The format command must be updated so that it only preserves alphanumeric characters and removes "a", "an" and "the" from the beginning of the answers and attempts. This is to resolve most issues with the comparison.

    bug 
    opened by LeoSaucedo 0
  • Give Items Command

    Give Items Command

    Implement a ;give item <user> <item> <amount> feature with the following spec:

    • If a user owns >= amount items, give amount items to user.
    • If a user owns < amount items, inform the user that there is not enough of the item to give.
    • Use the addItem on both the donor and receiver to prevent item inflation.
    enhancement 
    opened by LeoSaucedo 0
Releases(0.0.1)
Owner
Carlos Saucedo
Computer Science at Florida State University. Software Engineering at Grainhouse.
Carlos Saucedo
PyMusic Player is a music player written in python3.

PyMusic Player is a music player written in python3. It harvests r

PythonSerious 2 Jan 30, 2022
Discord bot that automatically fills out health screenings

Auto Covid Bot Automatically fill out the NYC DOE health screening form by registering with a discord bot School code can be found on https://schoolse

Cleo 2 Jul 29, 2022
Mazda Connected Service API wrapper based on pymazda and Flask.

Mazda Connected Service Relay Mazda Connected Service API wrapper based on pymazda and Flask. Usage Make POST calls to https://mymazda.herokuapp.com/{

Alan Chen 10 Jan 05, 2023
Simple web-based hcaptcha bypass

Hcaptcha-Bypass !!! If you found this useful, please click the STAR button !!! Simple web-based hcaptcha bypass Just a demonstration right now, and yo

Kieronia 4 Oct 06, 2021
SpaceManJax's open-source Discord Bot. Now on Github!

SpaceManBot This is SpaceManJax's open-source Discord.py Bot. Now on Github! This bot runs on Repl.it, which is a free online code editor. It can do a

Jack 1 Nov 16, 2021
Posts locally saved videos to the desired subreddit

redditvideoposter posts locally saved videos to the desired subreddit ================================================================= STEPS: pip ins

Kyrus 2 Dec 01, 2021
It's My Bot, For my group in telegram :)

Get Start USage This robot is written in Python language for devdood Group in Telegram ... You can easily edit and use this source Edit and Run You ne

Mohsen farzadmanesh 7 Sep 24, 2022
A discord webhook client written in Python.

DiscordWebhook A discord webhook client written in Python. Installation pip install webhook-client Example from webhook_client import WebhookClient, E

Elijah 4 Nov 28, 2022
LHXP・Official "LH - Cyber Security" Discord Leveling-Bot

LHXP・Official "LH - Cyber Security" Discord Leveling-Bot Based on nsde/NOVΛLIX Feature Overview /clear @user Requires admin permission Purges all XP

Felix・onlix 2 Mar 09, 2022
A file-based quote bot written in Python

Let's Write a Python Quote Bot! This repository will get you started with building a quote bot in Python. It's meant to be used along with the Learnin

1 Nov 01, 2021
Home Assistant custom integration for controlling Powered by Tuya (PBT) devices using Tuya Open API, officially maintained by the Tuya Developer Team.

Tuya Home Assistant Integration Home Assistant custom integration for controlling Powered by Tuya (PBT) devices using Tuya Open API, officially mainta

Tuya 704 Jan 03, 2023
multi-purpose discord bot

virus multi-purpose discord bot ⚠️ WARNING This project is incomplete and may not work as expected. Download & Run Install Python =3.10 Clone the sou

miten 2 Jan 17, 2022
Instagram story report with python

instagram-story-report Mass reports a victim stories. Made for fun, but can be used for chaos Single session and multi session support Login, choose a

Joshua Solo 8 May 08, 2022
A script to forward mass number of media to another group/channel. Heroku deploy

Telegram Forward Script 😇 This is a Script to Forward Large Number of Files to Another Telegram Channel. Star එකක් දාල fork එකක් ගහපියව් 🥴 If You Tr

Anjana Madu 17 Oct 21, 2022
BSDotPy, A module to get a bombsquad player's account data.

BSDotPy BSDotPy, A module to get a bombsquad player's account data from bombsquad's servers. Badges Provided By: shields.io Acknowledgements Issues Pu

Rudransh Joshi 3 Feb 17, 2022
A simple python discord bot with commands for moderation and utility.

Discord Bot A simple python discord bot with commands for moderation, utility and fun. Moderation $kick user reason - Kick a user from the server

syn 3 Feb 06, 2022
Kang Sticker bot

Kang Sticker Bot A simple Telegram bot which creates sticker packs from other stickers, images, documents and URLs. Based on kangbot Deploy Credits: s

Hafitz Setya 11 Jan 02, 2023
Satoshi is a discord bot template in python using discord.py that allow you to track some live crypto prices with your own discord bot.

Satoshi ~ DiscordCryptoBot Satoshi is a simple python discord bot using discord.py that allow you to track your favorites cryptos prices with your own

Théo 2 Sep 15, 2022
A self hosted slack bot to conduct standups & generate reports.

StandupMonkey A self hosted slack bot to conduct standups & generate reports. Report Bug · Request Feature Installation Install already hosted bot (Us

Muhammad Haseeb 69 Jan 01, 2023
Die wichtigsten APIs Deutschlands in einem Python Paket.

Deutschland A python package that gives you easy access to the most valuable datasets of Germany. Installation pip install deutschland Geographic data

Bundesstelle für Open Data 921 Jan 08, 2023