44 Commits
v0.3.0 ... main

Author SHA1 Message Date
a9bff4d2de Merge pull request 'v0.5.0' (#52) from staging into main
All checks were successful
build-docker / docker (push) Successful in 28s
build-docker-release / docker (release) Successful in 28s
Reviewed-on: #52
2026-04-08 18:32:38 +03:00
80f26fd37b Merge pull request 'v0.5.0' (#51) from dev into staging
All checks were successful
build-docker / docker (push) Successful in 29s
Reviewed-on: #51
2026-04-08 18:29:45 +03:00
6afa5c3072 Added support for Gatus-based monitoring
All checks were successful
build-docker / docker (push) Successful in 1m33s
2026-04-08 17:21:17 +02:00
51f0fa7250 Merge pull request 'v0.4.2' (#50) from staging into main
All checks were successful
build-docker / docker (push) Successful in 30s
build-docker-release / docker (release) Successful in 31s
Reviewed-on: #50
2026-03-08 23:42:54 +02:00
8b0ad4effa Merge pull request 'v0.4.2' (#49) from dev into staging
All checks were successful
build-docker / docker (push) Successful in 32s
Reviewed-on: #49
2026-03-08 23:39:54 +02:00
7ffa8e7789 Updated CI/CD workflows
All checks were successful
build-docker / docker (push) Successful in 32s
2026-03-08 22:33:07 +01:00
kku-inc
1e482ac330 Updated libbot to 4.5.0 and relaxed versions of some dependencies
All checks were successful
build-docker / docker (push) Successful in 1m35s
2026-03-08 22:12:06 +01:00
0352a7ff22 Merge pull request 'Update dependency redis to ~=7.2.0' (#47) from renovate/redis-7.x into dev
Some checks failed
build-docker / docker (push) Failing after 54s
Reviewed-on: #47
2026-02-17 02:20:57 +02:00
71731015ad Update dependency redis to ~=7.2.0 2026-02-16 19:22:18 +02:00
db3fb9d32e Replaced ubuntu-latest with ubuntu-24.04
All checks were successful
build-docker / docker (push) Successful in 34s
2026-01-04 22:49:05 +01:00
299801e8c3 Merge pull request 'v0.4.1' (#46) from staging into main
All checks were successful
build-docker-release / docker (release) Successful in 32s
Reviewed-on: #46
2026-01-01 21:46:19 +02:00
1e28219ad8 Merge pull request 'v0.4.1' (#45) from dev into staging
All checks were successful
build-docker / docker (push) Successful in 30s
Reviewed-on: #45
2026-01-01 21:44:41 +02:00
9557d4ec8f Merge pull request 'Update dependency libbot to v4.4.1' (#44) from renovate/libbot-4.x into dev
All checks were successful
build-docker / docker (push) Successful in 51s
Reviewed-on: #44
2026-01-01 21:38:51 +02:00
b0611ff035 Added Docker CI actions
Some checks failed
build-docker / docker (push) Failing after 33s
2026-01-01 20:36:41 +01:00
8ad67d4dcc Update dependency libbot to v4.4.1 2026-01-01 21:13:26 +02:00
2d236dc9cd Merge pull request 'Update dependency redis to ~=7.1.0' (#43) from renovate/redis-7.x into dev
Reviewed-on: #43
2025-11-21 01:12:44 +02:00
0af2b07d09 Update dependency redis to ~=7.1.0 2025-11-19 18:11:29 +02:00
a60cc911d0 Merge pull request 'Update dependency redis to v7' (#42) from renovate/redis-7.x into dev
Reviewed-on: #42
2025-10-22 19:32:17 +03:00
e39dd51967 Update dependency redis to v7 2025-10-22 18:57:04 +03:00
4ca2e4cc79 Merge pull request 'Update dependency aiofiles to v25' (#41) from renovate/aiofiles-25.x into dev
Reviewed-on: #41
2025-10-11 00:41:22 +03:00
c8e2494b22 Update dependency aiofiles to v25 2025-10-10 00:24:50 +03:00
01a682635b Merge pull request 'Update dependency ujson to ~=5.11.0' (#40) from renovate/ujson-5.x into dev
Reviewed-on: #40
2025-08-22 16:44:03 +03:00
775445a02b Update dependency ujson to ~=5.11.0 2025-08-20 15:20:15 +03:00
71d620c163 Merge pull request 'Update dependency redis to ~=6.4.0' (#39) from renovate/redis-6.x into dev
Reviewed-on: #39
2025-08-07 12:10:29 +03:00
1497d959bf Update dependency redis to ~=6.4.0 2025-08-07 11:47:11 +03:00
8baec677fc Merge pull request 'Update dependency redis to ~=6.3.0' (#38) from renovate/redis-6.x into dev
Reviewed-on: #38
2025-08-05 11:50:51 +03:00
926f03a525 Update dependency redis to ~=6.3.0 2025-08-05 11:24:46 +03:00
55b174927b Merge pull request 'v0.4.0' (#37) from staging into main
Reviewed-on: #37
2025-07-09 20:44:27 +03:00
5c88d08c6f Merge pull request 'v0.4.0' (#36) from dev into staging
Reviewed-on: #36
2025-07-09 18:57:18 +03:00
79c1f5b147 Added support for cache prefixes and TTL 2025-07-09 16:49:01 +02:00
a468824d30 Merge pull request 'Update dependency libbot to v4.4.0' (#35) from renovate/libbot-4.x into dev
Reviewed-on: #35
2025-07-09 16:00:24 +03:00
efc17fba23 Update dependency libbot to v4.4.0 2025-07-09 16:00:14 +03:00
148f2901e4 Merge pull request 'Update dependency libbot to v4.3.0' (#34) from renovate/libbot-4.x into dev
Reviewed-on: #34
2025-07-08 15:45:33 +03:00
2853d0d66e Update dependency libbot to v4.3.0 2025-07-08 02:41:34 +03:00
cdae81a6ee Merge pull request 'Update dependency redis to ~=6.2.0' (#33) from renovate/redis-6.x into dev
Reviewed-on: #33
2025-05-28 11:09:11 +03:00
ad3eda601a Update dependency redis to ~=6.2.0 2025-05-28 08:53:49 +03:00
5efdee2752 Merge pull request 'Update dependency libbot to v4.2.0' (#32) from renovate/libbot-4.x into dev
Reviewed-on: #32
2025-05-18 20:26:43 +03:00
ab514cab11 Update dependency libbot to v4.2.0 2025-05-18 19:29:00 +03:00
6063452c64 Merge pull request 'Update dependency redis to ~=6.1.0' (#31) from renovate/redis-6.x into dev
Reviewed-on: #31
2025-05-13 16:06:16 +03:00
534c652bb5 Update dependency redis to ~=6.1.0 2025-05-13 16:05:25 +03:00
dda548b5fc Merge pull request 'Update dependency redis to v6' (#30) from renovate/redis-6.x into dev
Reviewed-on: #30
2025-04-30 23:21:04 +03:00
42cc6aa29e Update dependency redis to v6 2025-04-30 22:28:12 +03:00
c745405064 Update dependency redis to ~=5.3.0 (#29) 2025-04-30 18:53:55 +03:00
ecfde46f94 Update dependency redis to ~=5.3.0 2025-04-30 18:21:41 +03:00
9 changed files with 226 additions and 12 deletions

View File

@@ -0,0 +1,32 @@
name: build-docker
on:
push:
branches:
- main
- staging
- dev
jobs:
docker:
runs-on: ubuntu-24.04
steps:
- name: Login to Docker Registry
uses: docker/login-action@v3
with:
registry: ${{ vars.DOCKER_REGISTRY_FQDN }}
username: ${{ vars.DOCKER_REGISTRY_USERNAME }}
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
tags: ${{ vars.DOCKER_REGISTRY_FQDN }}/${{ vars.DOCKER_IMAGE_USERNAME }}/${{ vars.DOCKER_IMAGE_NAME }}:${{ gitea.REF_NAME }}
secrets: |
GIT_AUTH_TOKEN=${{ secrets.DOCKER_REGISTRY_TOKEN }}

View File

@@ -0,0 +1,30 @@
name: build-docker-release
on:
release:
types:
- published
jobs:
docker:
runs-on: ubuntu-24.04
steps:
- name: Login to Docker Registry
uses: docker/login-action@v3
with:
registry: ${{ vars.DOCKER_REGISTRY_FQDN }}
username: ${{ vars.DOCKER_REGISTRY_USERNAME }}
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
tags: ${{ vars.DOCKER_REGISTRY_FQDN }}/${{ vars.DOCKER_IMAGE_USERNAME }}/${{ vars.DOCKER_IMAGE_NAME }}:${{ gitea.REF_NAME }},${{ vars.DOCKER_REGISTRY_FQDN }}/${{ vars.DOCKER_IMAGE_USERNAME }}/${{ vars.DOCKER_IMAGE_NAME }}:latest
secrets: |
GIT_AUTH_TOKEN=${{ secrets.DOCKER_REGISTRY_TOKEN }}

View File

@@ -0,0 +1,28 @@
name: build-docker
on:
pull_request:
branches:
- dev
jobs:
docker:
runs-on: ubuntu-24.04
steps:
- name: Login to Docker Registry
uses: docker/login-action@v3
with:
registry: ${{ vars.DOCKER_REGISTRY_FQDN }}
username: ${{ vars.DOCKER_REGISTRY_USERNAME }}
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
- name: Build
uses: docker/build-push-action@v6
with:
push: false
tags: ${{ vars.DOCKER_REGISTRY_FQDN }}/${{ vars.DOCKER_IMAGE_USERNAME }}/${{ vars.DOCKER_IMAGE_NAME }}:${{ gitea.REF_NAME }}

View File

@@ -105,6 +105,17 @@ contain data that shouldn't normally be logged.
As an experiment, Docker deployment option has been added.
### Starting the bot
1. Install MongoDB using the [official installation manual](https://www.mongodb.com/docs/manual/installation)
2. Download
the [configuration example file](https://git.end-play.xyz/HoloUA/Discord/src/branch/main/config_example.json) and
store it somewhere you would like your bot to access it
3. Complete the [configuration](#Configuration) step for this file
4. `docker run -d -v /path/to/config.json:/app/config.json --name holoua-discord git.end-play.xyz/holoua/holoua-discord`
## Building Docker images [Experimental]
### Building the image
1. `git clone https://git.end-play.xyz/HoloUA/Discord.git`

View File

@@ -1,6 +1,11 @@
import logging
from datetime import datetime, timezone, timedelta
from logging import Logger
from typing import Literal
from aiohttp import ClientSession, ClientTimeout
from apscheduler.triggers.cron import CronTrigger
from apscheduler.triggers.date import DateTrigger
from libbot.cache.classes import CacheMemcached, CacheRedis
from libbot.cache.manager import create_cache_client
from libbot.pycord.classes import PycordBot
@@ -13,8 +18,45 @@ class HoloBot(PycordBot):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._schedule_jobs()
self._set_cache_engine()
def _set_cache_engine(self) -> None:
if "cache" in self.config and self.config["cache"]["type"] is not None:
self.cache = create_cache_client(self.config, self.config["cache"]["type"])
cache_type: Literal["redis", "memcached"] | None = self.config["cache"]["type"]
if "cache" in self.config and cache_type is not None:
self.cache = create_cache_client(
self.config,
cache_type,
prefix=self.config["cache"][cache_type]["prefix"],
default_ttl_seconds=3600,
)
async def _send_heartbeat(self) -> None:
if self.config["monitoring"]["enabled"] is False:
return
async with ClientSession() as session:
await session.post(
self.config["monitoring"]["url"],
headers={
"Authorization": f"Bearer {self.config['monitoring']['token']}"
},
timeout=ClientTimeout(3.0),
)
def _schedule_jobs(self) -> None:
if self.scheduler is None:
return
self.scheduler.add_job(
self._send_heartbeat,
trigger=DateTrigger(
datetime.now(tz=timezone.utc) + timedelta(seconds=5),
timezone=timezone.utc,
),
)
self.scheduler.add_job(
self._send_heartbeat,
trigger=CronTrigger.from_crontab("* * * * *"),
)

View File

@@ -25,12 +25,19 @@
"cache": {
"type": null,
"memcached": {
"uri": "127.0.0.1:11211"
"uri": "127.0.0.1:11211",
"prefix": null
},
"redis": {
"uri": "redis://127.0.0.1:6379/0"
"uri": "redis://127.0.0.1:6379/0",
"prefix": null
}
},
"monitoring": {
"enabled": false,
"url": "https://status.example.org/api/v1/endpoints/my-group_my-service/external?success=true",
"token": "12345678"
},
"logging": {
"size": 512,
"location": "logs"

View File

@@ -0,0 +1,31 @@
import logging
from logging import Logger
from libbot.utils import config_set, config_delete
from mongodb_migrations.base import BaseMigration
logger: Logger = logging.getLogger(__name__)
class Migration(BaseMigration):
def upgrade(self):
try:
config_set("prefix", None, "cache", "memcached")
config_set("prefix", None, "cache", "redis")
except Exception as exc:
logger.error(
"Could not upgrade the config during migration '%s' due to: %s",
__name__,
exc,
)
def downgrade(self):
try:
config_delete("prefix", "cache", "redis")
config_delete("prefix", "cache", "memcached")
except Exception as exc:
logger.error(
"Could not downgrade the config during migration '%s' due to: %s",
__name__,
exc,
)

View File

@@ -0,0 +1,33 @@
import logging
from logging import Logger
from libbot.utils import config_set, config_delete
from mongodb_migrations.base import BaseMigration
logger: Logger = logging.getLogger(__name__)
class Migration(BaseMigration):
def upgrade(self):
try:
config_set("enabled", False, "monitoring")
config_set("url", "", "monitoring")
config_set("token", "", "monitoring")
except Exception as exc:
logger.error(
"Could not upgrade the config during migration '%s' due to: %s",
__name__,
exc,
)
def downgrade(self):
try:
config_delete("monitoring", "enabled")
config_delete("monitoring", "url")
config_delete("monitoring", "token")
except Exception as exc:
logger.error(
"Could not downgrade the config during migration '%s' due to: %s",
__name__,
exc,
)

View File

@@ -1,13 +1,13 @@
# Waifu pics related dependencies (not listed directly by waifupics)
aiohttp>=3.10.0
requests>=2.32.2
aiohttp>=3.10.0,<4.0.0
requests>=2.32.2,<3.0.0
aiofiles~=24.1.0
apscheduler>=3.10.0
aiofiles>=23.0.0,<26.0.0
apscheduler>=3.0.0,<4.0.0
async_pymongo==0.1.11
libbot[speed,pycord,cache]==4.1.0
libbot[speed,pycord,cache]==4.5.0
mongodb-migrations==1.3.1
pymemcache~=4.0.0
redis~=5.2.1
ujson~=5.10.0
pymemcache>=4.0.0,<5.0.0
redis>=7.0.0,<8.0.0
ujson>=5.0.0,<6.0.0
WaifuPicsPython==0.2.0