A cli bot to send simple messages to a Discord channel.
Project description
A simple python Discord bot to send messages to Discord channel via command line.
It allows markdown formatted messages and attaching files.
It registers the following commands:
dbot-run - main CLI entry-point
dbot-message - (short-hand) to send a message, or even pipe - message contents
dbot-file - (short-hand) to send a file with an message
dbot-info - (short-hand) to send a message with system information (extra dependencies have to be installed!)
dbot-observe - a blocking script, that runs periodic system checks and notifies about shortages (requires extra dependencies to be installed)
Requirements
Python >= 3.6 (see badges above)
Extra:
Installation
python3 -m pip install discord-notifier-bot
Optionally, install it locally with --user.
For system info messages using dbot-info or dbot-run info [...], you have to install extra dependencies. You can choose between cpu (cpu + disk information) and gpu (nvidia-smi information):
python3 -m pip install discord-notifier-bot[cpu,gpu]
Configuration
Configuration is done by placing a .dbot.conf file in one of the following directories:
$HOME/.dbot.conf
$HOME/dbot.conf
./.dbot.conf
./dbot.conf
/etc/dbot.conf
Alternatively a configuration file can be provided via -c/--config CLI options.
The configuration file should be a standard INI file. A template can be found in the templates folder. All configurations are placed under the discord-bot section.
Example:
[discord-bot]
# the bot token (used for login)
token = abc
# the numeric id of a channel, can be found when activating the developer options in appearances
channel = 123
Usage
dbot-message and dbot-file are simpler versions of dbot-run.
Print help and available options:
dbot-run -h
Sending messages:
# send a simple message
dbot-run message "Test message"
# or shorter:
dbot-message "Test **message**"
# pipe output
echo "Test" | dbot-emessage -
# wrap it inside a code-block ```
# optionally with a type
cat `which dbot-message` | dbot-message - --type
cat `which dbot-message` | dbot-message - --type python
Sending a file:
dbot-file README.rst "Your message to desribe the attached file"
# or with no visible message:
dbot-file README.rst ""
# optionally also like this:
dbot-run file -f README.rst "Message ..."
You are always able to specify the configuration file like this:
dbot-run -c /path/to/dbot.conf [...]
dbot-{message,file} -c /path/to/dbot.conf [...]
Only with dbot-run: To display debugging information (api calls, log messages etc.):
dbot-run -v [...]
You may also run the bot with the python module notation. But it will only run the same entry-point like dbot-run.
python -m discord_notifier_bot [...]
System Observer Bot
As of version 0.2.*, I have included some basic system observation code. Besides the dbot-info command that sends a summary about system information to a Discord channel, an observation service with dbot-observe is included. The command runs a looping Discord task that checks every 5 min some predefined system conditions, and sends a notification if a badness value is over a threshold. This badness value serves to either immediatly notify a channel if a system resource is exhausted or after some repeated limit exceedances.
The code (checks and limits) can be found in discord_notifier_bot.sysinfo. The current limits are some less-than educated guesses, and are subject to change. Dynamic configuration is currently not an main issue, so users may need to clone the repo, change values and install the python package from source:
git clone https://github.com/Querela/discord-notifier-bot.git
cd discord-notifier-bot/
# [do the modifications in discord_notifier_bot/sysinfo.py]
python3 -m pip install --user --upgrade --editable .[cpu,gpu]
The system information gathering requires the extra dependencies to be installed, at least cpu, optionally gpu.
I suggest that you provide a different Discord channel for those notifications and create an extra .dbot-observer.conf configuration file that can then be used like this:
dbot-observe [-d] -c ~/.dbot-observer.conf
Embedded in other scripts
Sending messages is rather straightforward. More complex examples can be found in the CLI entrypoints, see file discord_notifier_bot.cli. Below are some rather basic examples (extracted from the CLI code).
Basic setup (logging + config loading):
from discord_notifier_bot.cli import setup_logging, load_config
# logging (rather basic, if needed)
setup_logging(True)
# load configuration file (provide filename or None)
configs = load_config(filename=None)
Sending a message:
from discord_notifier_bot.bot import send_message
# message string with basic markdown support
message = "The **message** to `send`"
# bot token and channel_id (loaded from configs or hard-coded)
bot_token, channel_id = configs["token"], configs["channel"]
# send the message
send_message(bot_token, channel_id, message)
Bot Creation etc.
See information provided by:
Short description
You have to own a Discord server! Or know someone with administrator/moderation(?) privileges.
Visit and login to the Discord developer page.
Create a new application. The given name is also the visible name of the bot. (default, can be changed later?)
Create a bot (on the Bot page). You should disable the Public Bot option.
The bot login token (credentials) can be found on the Bot page.
Change to the OAuth2 page and check
Scopes: Bot
Bot Permissions: Send Messages, Attach Files (in the Text Permissions column)
Copy the URL in the Scopes section and paste it in a new browser tab.
Now you can choose one (?) of your own Discord servers to add the bot to. (For this you need server administration permissions, or be the owner..?)
To get the channel id, send the following message on your server \#channelname, or enable developer options. You may want to visit the following pages for more information:
Credits
Copyright and License Information
Copyright (c) 2020 Erik Körner. All rights reserved.
See the file “LICENSE” for information on the history of this software, terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.
All trademarks referenced herein are property of their respective holders.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for discord-notifier-bot-0.2.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 751e2e627234f1f94980bd3cd4438a1fb330e8c37c5e288814d48ab8faa053b6 |
|
MD5 | 05eacb214b1b95e8cd44047457999f96 |
|
BLAKE2b-256 | c4c4cf00c05ce2bf9ea0b8537cbec3359e74323e90d44a9609f64cdafa4edd32 |
Hashes for discord_notifier_bot-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7a8fcf75261902abe4247ef25926f182d781f56626a8ed20885753260d9813a |
|
MD5 | 188896c82beb899d88d0f08d8ce3ac66 |
|
BLAKE2b-256 | 1a345f584b9a84a453d5d3aa310cbe5f2f703ccfb538b1af46caae0481474f4d |