Manages the sales ads of the HardwareLounge Discord server. The bot will remove old messages and check for allowed domains in messages. If a message does not contain at least one of the allowed domains, it will be deleted.
Invite the bot with the following link:
https://discord.com/api/oauth2/authorize?client_id= CLIENT ID &permissions=93184&scope=bot
You can find the client ID in the Discord Developer Portal.
apt install python3 python3-pippip3 install -r requirements.txtpython3 main.py
docker build -t selly .docker run -d --name selly -e TOKEN=YOUR_TOKEN -e CHANNELS=YOUR_CHANNELS [...] selly(Add the environment variables with-e)
Only General and Delete conditions are required. The other sections have default values.
TOKEN: The bot token. You can find it in the Discord Developer Portal.
CHANNELS: A list of channel IDs where the bot is allowed to run.
ALLOWED_DOMAINS: A list of domains that are allowed in a message. If a message does not contain at least one of these domains, it will be deleted.
ALLOW_WWW_SUBDOMAINS: If this is set to true, the bot will also allow the www subdomain of the allowed domains. If a configured allowed domain contains a www subdomain, this will be ignored. Set this to false if you want to allow only the exact domain.
ALLOWED_ROLES: A list of role IDs that are allowed to post messages without a valid link. If a message does not contain at least one of the allowed domains, but the author has at least one of the allowed roles, the message will not be deleted.
MESSAGE_TITLE: The title of the message that will be sent when a message is deleted. Default: Your ad must contain a sales ad link
MESSAGE_DESCRIPTION: The description of the message that will be sent when a message is deleted. You can use \n for a line break and {allowed_domains} for a list of the allowed domains. Default: Please attach a link with at least one of the following domains:\n\n{allowed_domains}\n\nIf your ad not contain at least one of these domains, your message will be deleted.
MESSAGE_COLOR: The color of the message that will be sent when a message is deleted. Use a hexadecimal color code. Default: FF0000
DELETE_MESSAGE_AFTER: The time after which the message that will be sent when a message is deleted will be deleted. Default: 30 seconds
CHECK_FOR_OLD_MESSAGES_EVERY: The time after which the bot will check for old messages. Default: 30 minutes
DELETE_MESSAGES_OLDER_THAN: The time after which a message will be deleted. Pinned messaged and messages from bots will be ignored. Default: 2 weeks
Config file (for local)
Create a config.yml file in the root directory of the project. Use the YAML format and use lowercase for the keys.
Example of a full config:
# Generaltoken: xxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxchannels:
- 1059677880470216744
- 1051200829736103998# Delete conditionsallowed_domains:
- ebay.comallow_www_subdomains: trueallowed_roles:
- 700795226817691668
- 505097770252632081# Message when deleting a message without valid linkmessage_title: Please attach a link to your admessage_description: If you dont attach a link to your ad, your message will be deleted.message_color: C62B2Bdelete_message_after: 1 minute# Delete old messagescheck_for_old_messages_every: 5 minutesdelete_messages_older_than: 1 dayEnvironment variables (for Docker)
Use uppercase for the keys. Lists are separated by a comma. The environment variables will override the config file.
Example of a full config:
# General
TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
CHANNELS=1059677880470216744,1051200829736103998
# Delete conditions
ALLOWED_DOMAINS=ebay.com
ALLOW_WWW_SUBDOMAINS=true
ALLOWED_ROLES=700795226817691668,505097770252632081
# Message when deleting a message without valid link
MESSAGE_TITLE=Please attach a link to your ad
MESSAGE_DESCRIPTION=If you dont attach a link to your ad, your message will be deleted.
MESSAGE_COLOR=C62B2B
DELETE_MESSAGE_AFTER=1 minute
# Delete old messages
CHECK_FOR_OLD_MESSAGES_EVERY=5 minutes
DELETE_MESSAGES_OLDER_THAN=1 day| Timespan | Long | Short |
|---|---|---|
| 1 second | 1 second | 1s |
| 2 seconds | 2 seconds | 2s |
| 1 minute | 1 minute | 1m |
| 2 minutes | 2 minutes | 2m |
| 1 hour | 1 hour | 1h |
| 2 hours | 2 hours | 2h |
| 1 day | 1 day | 1d |
| 2 days | 2 days | 2d |
| 1 week | 1 week | 1w |
| 2 weeks | 2 weeks | 2w |
| 1 year | 1 year | 1y |
| 2 years | 2 years | 2y |