Skip to content

feat(bot): team chat keepalive every 5 minutes, and fix the linux CI build - #117

Merged
3vcloud merged 2 commits into
masterfrom
feat/team-chat-keepalive
Aug 9, 2026
Merged

3vcloud merged 2 commits into
masterfrom
feat/team-chat-keepalive

Conversation

@3vcloud

@3vcloud 3vcloud commented Aug 9, 2026

Copy link
Copy Markdown
Member

Two commits.

feat(bot): send a team chat keepalive every 5 minutes

The party search bots only ever listen - they never send anything to the game
server - so the game was kicking them for being idle. Send ping on the team
channel every 5 minutes from the main bot loop, just after
ensure_correct_outpost() so it only fires once we're in-game and settled. The
bots are their own one-man party, so no other player sees it. Same trick
kamadanv2's trade bot already uses (main.c:976).

ci: fix the linux bot build

Build bot on alpine has been red on master for over a year, for three
independent reasons:

  • It never ran Headquarter's bootstrap.py, so mbedtls and curl were never
    built and cmake died on find_package(MbedTLS). Now bootstrapped with
    CFLAGS=-fPIC, since mbedtls is linked into the bot's shared library.
  • It built on Alpine, but Headquarter's linux/thread.c assumes pthread_t is
    an integer, which only holds on glibc (-Werror=int-conversion on musl).
    Builds on debian:bookworm-slim now - the same toolchain the deployed
    partysearchbot image uses.
  • main.cpp couldn't compile against the C headers at all: event.h declares a
    struct member named friend, and Headquarter defines a noreturn macro that
    mangles libstdc++'s [[gnu::noreturn]]. Both are handled around the
    extern "C" block now, instead of relying on the sed hacks in
    gwdevhub-core's deployment Dockerfile.

Workflow file renamed bot_alpine.yaml -> bot_linux.yaml since it's no longer
alpine. Verified green in CI (1m05s), and I also re-ran the gwdevhub-core
deployment Dockerfile build against this branch - still builds, the seds there
are now no-ops but harmless.

🤖 Generated with Claude Code

GWToolbox Omnitool and others added 2 commits August 8, 2026 23:07
The game disconnects clients that never send anything, and the party
search bots only ever listen, so they were being kicked for idling.
Send "ping" on the team channel every 5 minutes - the bots are their own
one-man party, so nobody else sees it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The bot CI job has been red on master for over a year, for three
reasons, all fixed here:

- It never ran Headquarter's bootstrap.py, so mbedtls and curl were
  never built and cmake failed on find_package(MbedTLS). Bootstrap with
  CFLAGS=-fPIC, since mbedtls gets linked into the bot's shared library.
- It built on Alpine, but Headquarter's linux/thread.c assumes pthread_t
  is an integer, which only holds on glibc. Build on debian:bookworm-slim
  instead - the same toolchain the deployed partysearchbot image uses.
- main.cpp couldn't compile against the C headers as-is: event.h has a
  struct member named `friend` and Headquarter defines a `noreturn`
  macro that mangles libstdc++'s [[gnu::noreturn]]. Handle both around
  the extern "C" block rather than relying on the sed hacks in
  gwdevhub-core's deployment Dockerfile.

Renames the workflow file since it's no longer alpine.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@3vcloud 3vcloud changed the title feat(bot): send a team chat keepalive every 5 minutes feat(bot): team chat keepalive every 5 minutes, and fix the linux CI build Aug 9, 2026
@3vcloud
3vcloud merged commit c958ba5 into master Aug 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant