Discord Uptime is a Discord bot that allows you to monitor the uptime of services using ICMP ping, tcp and http requests. There are also commands available to make manual requests. Built using discord.py, aioping and aiohttp.
Requires Python 3.8+
Install dependencies:
pip install -r requirements.txt
Bot setup (Rename config.example.json and edit the default values):
token
- Discord bot tokenprefix
- Discord bot prefixactivity_type
- Activity type for bot status (must be one of playing, streaming, listening, watching
)activity_name
- Text for bot statusdisable_help
- If true, the default help command will be disabledhide_ips
- If true, any IP addresses in notifications or the status command will be hiddennotification_channel
- Channel ID where down/up notifications will be sentretries
- How many retries to complete before flagging a server with down statusrole_to_mention
- Role ID which will be tagged in down/up notificationssecs_between_ping
- How many seconds between each uptime checktimeout
- How many seconds before a ping or HTTP request should timeoutNOTE: You must enable the Message Content intent in order to run v2.0+.
The bot can be run via the bot.py
entrypoint, e.g. python -m bot
.
You can also run the Bot via Docker, simply run:
docker run --name discord-uptime -d -v $PWD/config.json:/app/config.json:ro -v $PWD/servers.json:/app/servers.json:ro --restart=on-failure ghcr.io/finlaysawyer/discord-uptime:master
You can also use a release tag (e.g. v2.0.0
) instead of master
.
With this configuration you still need to manually create config.json
and servers.json
for the Bot to start, please refer to the appropriate instructions if unsure.
Servers should be setup similar to the examples already in server.json
:
http
, tcp
and ping
[
{
"name": "Google",
"type": "http",
"address": "google.com"
},
{
"name": "Gmail SMTP",
"type": "tcp",
"address": "smtp.gmail.com:465",
},
{
"name": "Cloudflare",
"type": "ping",
"address": "1.1.1.1"
}
]
Default Prefix: >
ping <address> [pings]
- Pings an address once, or for the amount specified via pings and returns the delay in mshttp <address>
- Performs a HTTP request to the specified address and returns the response codestatus
- Displays the status of all servers setup in servers.json
Status Command
Uptime & Downtime Notifications
Hide IP addresses
Contributions are welcome. I use flake8 & black for linting and there is a pre-commit config in the repo to run these tools against local commits.