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
A modern, easy to use, feature-rich, and async ready API wrapper improved and revived from original discord.py.

A Python API wrapper that is improved and revived from the original discord.py

Orion 19 Nov 06, 2021
Amanda-A next gen powerful telegram group manager bot for manage your groups and have fun with other cool modules.

Amanda-A next gen powerful telegram group manager bot for manage your groups and have fun with other cool modules.

Team Amanda 4 Oct 21, 2022
A Telegram bot for personal utilities

Aqua Aqua is a Telegram bot for personal utilities. Installation Prerequisites: Install Poetry for managing dependencies and fork/clone the repository

Guilherme Vasconcelos 2 Mar 30, 2022
Wrapper around the Mega API

python-mega Overview Wrapper around the Mega API. Based on the work of Julien Marchand. Installation Install using pip, including any optional package

Juan Riaza 104 Nov 26, 2022
Template to create a telegram bot in python

Template for Telegram Bot Template to create a telegram bot in python. How to Run Set your telegram bot token as environment variable TELEGRAM_BOT_TOK

PyTopia 12 Aug 14, 2022
A link shortner telegram bot version 2 with advanced features

URL-Shortner-Bot-V2 A link shortner telegram bot version 2 with advanced features Made with Python3 (C) @FayasNoushad Copyright permission under MIT L

Fayas Noushad 18 Dec 29, 2022
ZELDA USERBOT adalah userbot Telegram modular yang berjalan di Python3 dengan database sqlalchemy.

ZELDA USERBOT TELEGRAM Userbot Yang Di Buat Karena Sering Gabut Di Telegram. ZELDA USERBOT adalah userbot Telegram modular yang berjalan di Python3 de

1 Dec 23, 2021
Discord Multitool made in python 3.9

XTool Discord Multitool 24 Features: Webhook Delete VC Lagger Fast Token Checker Mass Report [Not Done] Token rape 2K Characters Bypass Block bypass M

Tiie 50 Dec 20, 2022
A telegram to pyrogram json bot

Pyrogram-Json-Bot A telegram to pyrogram json bot Please fork this repository don't import code Made with Python3 (C) @FayasNoushad Copyright permissi

Fayas Noushad 11 Dec 20, 2022
Simple PoC script that allows you to exploit telegram's "send with timer" feature by saving any media sent with this functionality.

Simple PoC script that allows you to exploit telegram's "send with timer" feature by saving any media sent with this functionality.

Matteo 52 Nov 29, 2022
Solves bombcrypto newest captcha

Solves Bombcrypto newest captcha A very compact implementation using just cv2 and ctypes, ready to be deployed to your own project. How does it work I

19 May 06, 2022
The Most advanced and User-Friendly Google Collab NoteBook to download Torrent directly to Google Drive with File or Magnet Link support and with added protection of Timeout Preventer.

Torrent To Google Drive (UI Added! 😊 ) A Simple and User-Friendly Google Collab Notebook with UI to download Torrent to Google Drive using (.Torrent)

Dr.Caduceus 33 Aug 16, 2022
Twitter Analysis of MIUUL CEO

Twitter Analysis of MIUUL CEO Business Problem I got last @mvahitkeskin 184 twee

Çağrı Karadeniz 6 Mar 12, 2022
Images to PDF Telegram Bot

ilovepdf Convert Images to PDF Bot This bot will helps you to create pdf's from your images [without leaving telegram] 😉 By Default: your pdf fil

✰Naͥbiͣlͫ A Navab✰ 116 Dec 29, 2022
Free TradingView webhook alert for basic plan users.

TradingView-Free-Webhook-Alerts Project start on 01-02-2022 Providing the free webhook service to the basic plan users in TradingView. Portal ↠ Instal

Freeman 31 Dec 25, 2022
Cryptocurrency Trading Bot - A trading bot to automate cryptocurrency trading strategies using Python, equipped with a basic GUI

Cryptocurrency Trading Bot - A trading bot to automate cryptocurrency trading strategies using Python, equipped with a basic GUI. Used REST and WebSocket API to connect to two of the most popular cry

Francis 8 Sep 15, 2022
OpenQuake's Engine for Seismic Hazard and Risk Analysis

OpenQuake Engine The OpenQuake Engine is an open source application that allows users to compute seismic hazard and seismic risk of earthquakes on a g

Global Earthquake Model 281 Dec 21, 2022
StudyLion is a Discord bot that tracks members' study and work time while offering members to view their statistics and use productivity tools such as: To-do lists, Pomodoro timers, reminders, and much more.

StudyLion - Discord Productivity Bot StudyLion is a Discord bot that tracks members' study and work time while offering members the ability to view th

45 Dec 26, 2022
PyMed is a Python library that provides access to PubMed.

IMPORTANT NOTE: I don't have time to maintain this library (as some of you might have noticed). The PubMed API is a little chaotic, without a clear do

Gijs Wobben 143 Dec 21, 2022
Easy to use API Wrapper for somerandomapi.ml.

Overview somerandomapi is an API Wrapper for some-random-api.ml Examples Asynchronous from somerandomapi import Animal

Myxi 1 Dec 31, 2021