Compare commits

..
67 Commits
Author SHA1 Message Date
Dustin Pianalto be0ed2a40d Add pgbouncer
CI / build (push) Has been cancelled
2021-10-10 18:37:26 -08:00
Dustin Pianalto af07976c78 Add pgbouncer
CI / build (push) Has been cancelled
2021-10-10 18:18:40 -08:00
Dusty.P fb4f43c234 Update deployment.yml
CI / build (push) Has been cancelled
2021-10-05 23:45:08 -08:00
Dustin Pianalto 34a6c0cdd3 Merge branch 'master' of github.com:dustinpianalto/Goff
CI / build (push) Has been cancelled
2021-10-05 23:34:30 -08:00
Dusty.P a6cde5c69c Update main.yml
CI / build (push) Has been cancelled
2021-10-05 23:09:00 -08:00
Dustin Pianalto a2420f19c9 Update deployment
CI / build (push) Has been cancelled
2021-10-02 16:18:48 -08:00
Dustin Pianalto 2019dc4643 Update GH action and deployment
CI / build (push) Has been cancelled
2021-10-02 14:13:28 -08:00
Dustin Pianalto 9bb35bb30a Don't check roles when adding
CI / build (push) Has been cancelled
2021-08-18 14:24:20 -08:00
Dustin Pianalto 3cad5680b0 Add guild member update handler
CI / build (push) Has been cancelled
2021-08-18 11:26:25 -08:00
Dustin Pianalto f97494626f Don't add auto role until after membership check
CI / build (push) Has been cancelled
2021-08-18 11:01:24 -08:00
Dustin Pianalto b5a55a1b77 Don't add auto role until after membership check 2021-08-18 11:00:31 -08:00
Dustin Pianalto 02b5842107 Add milliseconds to timestamp
CI / build (push) Has been cancelled
2021-07-23 12:54:23 -08:00
Dustin Pianalto d345044b3a Add milliseconds to timestamp
CI / build (push) Has been cancelled
2021-07-23 12:39:35 -08:00
Dustin Pianalto b3aff0828c Add snowflake command
CI / build (push) Has been cancelled
2021-07-23 12:34:09 -08:00
Dustin Pianalto 3d4518f961 Don't log message edits if the After is blank (problem with message embeds)
CI / build (push) Has been cancelled
2021-07-01 19:54:12 -08:00
Dustin Pianalto 37e8fa52af Fix bug in getting tasks
CI / build (push) Has been cancelled
2021-06-22 12:58:42 -08:00
Dustin Pianalto a370c76ba4 Add Auto Role Feature
CI / build (push) Has been cancelled
2021-06-22 02:20:08 -08:00
Dustin Pianalto 2fe9de279d Add Auto Role Feature
CI / build (push) Has been cancelled
2021-06-22 02:15:42 -08:00
Dustin Pianalto 33776b1129 Add Auto Role Feature
CI / build (push) Has been cancelled
2021-06-22 02:02:47 -08:00
Dustin Pianalto 733cd87896 Add Auto Role Feature
CI / build (push) Has been cancelled
2021-06-22 01:58:31 -08:00
Dustin Pianalto ebf20670df Add Auto Role Feature
CI / build (push) Has been cancelled
2021-06-22 01:47:22 -08:00
Dustin Pianalto 14c5705473 Add Auto Role Feature
CI / build (push) Has been cancelled
2021-06-22 01:44:22 -08:00
Dustin Pianalto c72dcd0ec3 Update actions
CI / build (push) Has been cancelled
2021-06-22 01:37:41 -08:00
Dustin Pianalto 61d500946e Add Auto Role Feature
CI / build (push) Has been cancelled
2021-06-22 01:29:38 -08:00
Dustin Pianalto 65bb218260 Initial DO workflow test
CI / build (push) Has been cancelled
2021-01-13 00:15:42 -09:00
Dustin Pianalto d8d90a8414 Initial DO workflow test
CI / build (push) Has been cancelled
2021-01-12 23:29:51 -09:00
Dustin Pianalto 2e95aa0234 Initial DO workflow test
CI / build (push) Has been cancelled
2021-01-12 23:20:04 -09:00
Dustin Pianalto 480f5b6cc9 Initial DO workflow test
CI / build (push) Has been cancelled
2021-01-12 23:18:19 -09:00
Dustin Pianalto 97793ad622 Initial DO workflow test
CI / build (push) Has been cancelled
2021-01-12 23:16:29 -09:00
Dusty.P d581a9bf32 Merge pull request #8 from dustinpianalto/development
CI / build (push) Has been cancelled
Add action to deploy to ECS after image is built
2020-10-11 22:33:27 -08:00
Dustin Pianalto 13f80a6972 Add action to deploy to ECS after image is built
CI / build (push) Has been cancelled
2020-10-11 22:23:05 -08:00
Dusty.P 20bd455a44 Merge pull request #7 from dustinpianalto/development
CI / build (push) Has been cancelled
Add user to guild on user create
2020-10-09 23:48:07 -08:00
Dustin Pianalto cadef92efb Add user to guild on user create 2020-10-09 23:43:56 -08:00
Dusty.P f6f020ff48 Merge pull request #6 from dustinpianalto/development
CI / build (push) Has been cancelled
Attempt to insert user into db before creating tag
2020-10-09 23:26:02 -08:00
Dustin Pianalto a93139fcf2 Attempt to insert user into db before creating tag 2020-10-09 23:21:35 -08:00
Dusty.P d9ddfaf2cc Merge pull request #5 from dustinpianalto/development
CI / build (push) Has been cancelled
Deploy v0.0.8
2020-10-09 21:56:52 -08:00
Dustin Pianalto 05d4096766 Change default prefix back for main 2020-10-09 21:46:28 -08:00
Dustin Pianalto 6a33cceebb Reorg and add services 2020-10-09 21:34:47 -08:00
Dustin Pianalto 5cd626a5a4 Merge branch 'development' of github.com:dustinpianalto/Goff into development 2020-09-23 12:05:05 -08:00
Dustin Pianalto e2f25eaab4 Remove unnecessary rpn package
the rpn parser was moved to it's own repo and already imported in go.mod
2020-09-23 12:04:52 -08:00
Dusty.P ea058baff5 Create README.md 2020-09-23 11:43:54 -08:00
Dustin Pianalto d9e1efbaf0 Repo Reorg 2020-09-18 18:39:51 -08:00
Dustin Pianalto af506f828d Change db variable name 2020-09-14 12:42:25 -08:00
Dustin Pianalto 5c42616a3a Adjust Connection Pool 2020-09-14 12:36:14 -08:00
Dustin Pianalto 6cc5e042d5 Start Restructure of project 2020-09-14 00:10:24 -08:00
Dusty.P 03e6f069c9 Merge pull request #4 from dustinpianalto/development
Add sar and ping role when posting puzzle
2020-09-02 01:54:34 -08:00
Dustin Pianalto 4db28f5c0b Add sar and ping role when posting puzzle
CI / build (push) Has been cancelled
2020-09-02 01:49:29 -08:00
Dusty.P d876f4ced9 Merge pull request #3 from dustinpianalto/development
CI / build (push) Has been cancelled
Fix addtag removing newlines
2020-09-01 21:40:46 -08:00
Dustin Pianalto fb4d7977aa Fix addtag removing newlines 2020-09-01 21:36:14 -08:00
Dusty.P 68a02e2f24 Merge pull request #2 from dustinpianalto/development
Adding actions and reorg
2020-08-30 22:08:47 -08:00
Dustin Pianalto 30394b35e5 Merge branch 'master' into development
CI / build (push) Has been cancelled
2020-08-30 21:53:25 -08:00
Dustin Pianalto 87961c5081 Remove branch check and also push latest tag 2020-08-30 17:57:19 -08:00
Dustin Pianalto 562ec6acaf Test github.ref to get branch name
CI / build (push) Has been cancelled
2020-08-30 17:09:13 -08:00
Dustin Pianalto 3169953f3f Test github.ref to get branch name
CI / build (push) Has been cancelled
2020-08-30 17:07:37 -08:00
Dustin Pianalto d119425236 revert to previous method of getting branch name
CI / build (push) Has been cancelled
2020-08-30 16:51:00 -08:00
Dustin Pianalto ce1bbbc445 Check branch name 2020-08-30 16:46:05 -08:00
Dustin Pianalto f4ec8a7a49 Fix globs
CI / build (push) Has been cancelled
2020-08-30 16:19:35 -08:00
Dustin Pianalto bec52ad5a5 Fix globs 2020-08-30 16:03:44 -08:00
Dustin Pianalto 5411730a96 Fix globs 2020-08-30 16:03:01 -08:00
Dustin Pianalto 187f9816ca Fix globs 2020-08-30 16:00:59 -08:00
Dustin Pianalto feab8e661c Fix globs 2020-08-30 15:45:28 -08:00
Dustin Pianalto 96b63a4e83 Add action to build and push to ECR 2020-08-30 15:43:45 -08:00
Dustin Pianalto fcddca2226 Delete old organization 2020-08-30 00:10:11 -08:00
Dustin Pianalto 28d78bdb8c Reorganize and update Dockerfile 2020-08-30 00:08:40 -08:00
Dusty.P 35882993c2 Update init.go 2020-08-29 18:42:38 -08:00
Dusty.P 85bcb31d56 Merge pull request #1 from dustinpianalto/development
Add Puzzle parser
2020-08-29 18:37:59 -08:00
Dusty.P 23c0434ed3 Merge branch 'master' into development 2020-08-29 18:27:47 -08:00
36 changed files with 127 additions and 416 deletions
-5
View File
@@ -1,5 +0,0 @@
# Service release contract
Butler resolves this repository's protected source revision to verified immutable images. The platform updates only image references in the existing production Compose file and restarts only the already running application services. It preserves current environment, storage, routes, and provider configuration. It retains previous application images and restores them if readiness fails.
Migration and maintenance images are pinned when declared, but this release operation does not run database migrations or maintenance jobs. A release requiring a schema change needs the corresponding explicit platform migration first. No homelab image-pin commit is required for an ordinary compatible application release.
-12
View File
@@ -1,12 +0,0 @@
{
"version": 1,
"deployment": "goff-release",
"environment": "production",
"images": {
"goff_release_goff_image": {
"name": "goff",
"tag": "sha-{revision}"
}
},
"revision_variable": "goff_release_revision"
}
-6
View File
@@ -1,6 +0,0 @@
.git
.github
.gitea
.env
.idea
goff
-158
View File
@@ -1,158 +0,0 @@
name: Build and Push Container
on:
push:
branches:
- master
tags:
- v*
workflow_dispatch: null
pull_request:
branches:
- master
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number
|| github.run_id }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
build-and-push:
runs-on: butler-ci
env:
REGISTRY: gitea.wayfinderak.com
IMAGE_NAME: gitea.wayfinderak.com/wayfinderak/goff
container:
options: --dns 172.16.30.10
steps:
- name: Checkout
uses: https://github.com/actions/checkout@v4
- name: Select relevant delivery work
id: delivery
env:
DELIVERY_EVENT: ${{ github.event_name }}
DELIVERY_REF: ${{ github.ref }}
DELIVERY_SHA: ${{ github.sha }}
DELIVERY_BASE: ${{ github.event.pull_request.base.sha || github.event.before }}
run: |
cd .
bash scripts/ci-select.sh
- name: Install Go and Docker CLI if needed
if: ${{ steps.delivery.outputs.run == 'true' }}
shell: bash
run: |
set -euo pipefail
need_apt=0
need_apk=0
if ! command -v go >/dev/null 2>&1 || ! command -v docker >/dev/null 2>&1; then
if command -v apt-get >/dev/null 2>&1; then
need_apt=1
elif command -v apk >/dev/null 2>&1; then
need_apk=1
else
echo "No supported package manager found" >&2
exit 1
fi
fi
if [ "$need_apt" -eq 1 ]; then
apt-get update
if ! command -v go >/dev/null 2>&1; then
apt-get install -y golang-go
fi
if ! command -v docker >/dev/null 2>&1; then
apt-get install -y docker.io curl dnsutils iputils-ping
fi
fi
if [ "$need_apk" -eq 1 ]; then
if ! command -v go >/dev/null 2>&1; then
apk add --no-cache go
fi
if ! command -v docker >/dev/null 2>&1; then
apk add --no-cache docker-cli curl bind-tools iputils
fi
fi
go version
docker version
- name: Run tests
if: ${{ steps.delivery.outputs.run == 'true' }}
run: go test ./...
- name: Log in to Gitea Container Registry
if: ${{ (steps.delivery.outputs.run == 'true') && github.event_name != 'pull_request' }}
shell: bash
run: |
set -euo pipefail
for attempt in 1 2 3; do
echo "docker login attempt $attempt"
if echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login "$REGISTRY" -u "${{ secrets.REGISTRY_USERNAME }}" --password-stdin; then
exit 0
fi
sleep 5
done
echo "docker login failed after 3 attempts" >&2
exit 1
- name: Determine image tags
if: ${{ steps.delivery.outputs.run == 'true' }}
id: meta
shell: bash
env:
REF: ${{ gitea.ref }}
REF_NAME: ${{ gitea.ref_name }}
SHA: ${{ gitea.sha }}
run: |
set -euo pipefail
tags=("$IMAGE_NAME:sha-$SHA")
if [[ "$REF" == refs/tags/* ]]; then
version="$REF_NAME"
tags+=("$IMAGE_NAME:$version")
tags+=("$IMAGE_NAME:latest")
else
branch="$REF_NAME"
branch_safe="$(echo "$branch" | tr '/_' '--')"
sha_short="$(echo "$SHA" | cut -c1-7)"
tags+=("$IMAGE_NAME:$branch_safe")
tags+=("$IMAGE_NAME:$branch_safe-$sha_short")
if [[ "$branch" == "main" || "$branch" == "master" ]]; then
tags+=("$IMAGE_NAME:latest")
fi
fi
printf 'tags<<EOF\n' >> "$GITHUB_OUTPUT"
printf '%s\n' "${tags[@]}" >> "$GITHUB_OUTPUT"
printf 'EOF\n' >> "$GITHUB_OUTPUT"
- name: Build image
if: ${{ steps.delivery.outputs.run == 'true' }}
shell: bash
run: |
set -euo pipefail
mapfile -t tags <<'EOF'
${{ steps.meta.outputs.tags }}
EOF
build_args=()
for tag in "${tags[@]}"; do
build_args+=(--tag "$tag")
done
docker build --label "org.opencontainers.image.revision=$GITHUB_SHA" "${build_args[@]}" .
- name: Push image
if: ${{ (steps.delivery.outputs.run == 'true') && github.event_name != 'pull_request' }}
shell: bash
run: |
set -euo pipefail
while IFS= read -r tag; do
[ -n "$tag" ] || continue
docker push "$tag"
done <<'EOF'
${{ steps.meta.outputs.tags }}
EOF
+51 -51
View File
@@ -1,64 +1,64 @@
name: Build and Push Container
name: CI
# Controls when the action will run. Triggers the workflow on push to master or development
# with a tag like v1.0.0 or v1.0.0-dev
on:
push:
branches:
- master
- main
tags:
- v*
workflow_dispatch:
env:
REGISTRY: gitea.wayfinderak.com
IMAGE_NAME: wayfinderak/goff
tags:
- v[0-9]+.[0-9]+.[0-9]+
- v[0-9]+.[0-9]+.[0-9]+-[a-zA-Z]+
jobs:
docker:
build:
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Gitea registry
uses: docker/login-action@v3
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- name: Get Version
id: get_version
uses: battila7/get-version-action@v2.0.0
- name: install buildx
id: buildx
uses: crazy-max/ghaction-docker-buildx@v1
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
version: latest
- name: Prepare image tags
id: prep
shell: bash
- name: Docker Login
# You may pin to the exact commit or the version.
# uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
uses: docker/login-action@v1.10.0
with:
registry: ${{ secrets.DR_URL }}
# Username used to log against the Docker registry
username: ${{ secrets.DH_USERNAME }}
# Password or personal access token used to log against the Docker registry
password: ${{ secrets.DH_PASSWORD }}
# Log out from the Docker registry at the end of a job
logout: true
- name: Docker Build & Push
env:
IMAGE_TAG: ${{ steps.get_version.outputs.version-without-v }}
run: |
short_sha="${GITHUB_SHA::7}"
tags="${REGISTRY}/${IMAGE_NAME}:sha-${short_sha}"
docker buildx build --push \
--tag ${{ secrets.DR_URL }}/goff:$IMAGE_TAG \
--platform linux/amd64,linux/arm/v7,linux/arm64 .
if [[ "${GITHUB_REF_TYPE}" == "branch" && ("${GITHUB_REF_NAME}" == "master" || "${GITHUB_REF_NAME}" == "main") ]]; then
tags+=$'\n'"${REGISTRY}/${IMAGE_NAME}:latest"
fi
- name: Update deployment file
run: TAG=${{ steps.get_version.outputs.version-without-v }} && sed -i 's|<IMAGE>|${{ secrets.DR_URL }}/goff:'${TAG}'|' $GITHUB_WORKSPACE/deployment.yml
if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then
version="${GITHUB_REF_NAME#v}"
tags+=$'\n'"${REGISTRY}/${IMAGE_NAME}:${version}"
fi
{
echo 'tags<<EOF'
echo "$tags"
echo 'EOF'
} >> "$GITHUB_OUTPUT"
- name: Build and push image
uses: docker/build-push-action@v6
- uses: azure/k8s-set-context@v1
with:
context: .
push: true
platforms: linux/amd64,linux/arm64
tags: ${{ steps.prep.outputs.tags }}
method: kubeconfig
kubeconfig: ${{ secrets.KUBE_CONFIG }}
id: setcontext
- name: Deploy to Kubernetes
run: kubectl apply -f $GITHUB_WORKSPACE/deployment.yml
- name: Verify deployment
run: kubectl rollout status deployment/goff -n discord-bots
-2
View File
@@ -1,4 +1,2 @@
.env
.idea
portainer-app.env
+12 -10
View File
@@ -1,18 +1,20 @@
FROM golang:1.22-alpine AS builder
FROM golang:1.14-alpine as dev
WORKDIR /src
RUN apk add --no-cache ca-certificates git tzdata
WORKDIR /go/src/Goff
COPY ./go.mod .
COPY ./go.sum .
COPY go.mod go.sum ./
RUN go mod download
COPY . .
ARG TARGETARCH=amd64
RUN CGO_ENABLED=0 GOOS=linux GOARCH=$TARGETARCH go build -o /out/goff ./cmd/goff
RUN go install github.com/dustinpianalto/goff/...
FROM alpine:3.20
RUN apk add --no-cache ca-certificates tzdata
CMD [ "go", "run", "cmd/goff/main.go"]
COPY --from=builder /out/goff /usr/local/bin/goff
from alpine
ENTRYPOINT ["/usr/local/bin/goff"]
WORKDIR /bin
COPY --from=dev /go/bin/goff ./goff
CMD [ "goff" ]
-26
View File
@@ -1,26 +0,0 @@
# Portainer deployment notes
Generated from the current Kubernetes deployment in namespace `discord-bots`. Secret values are in the local `portainer-*.env` files.
## Kubernetes source
- Deployment: `goff`
- Replicas: `1`
- Rolling update: maxSurge `1`, maxUnavailable `1`
- minReadySeconds: `120`
- Labels/selectors: `app=goff`
- Image pull secrets: `none required for Portainer stack`
## Containers
- `pgbouncer`: image `timoha/pgbouncer:1.15.0`; env: DATABASE_URL, SERVER_TLS_SSLMODE, AUTH_TYPE; ports: 5432; requests: {'cpu': '500m', 'memory': '256Mi'}; limits: {'cpu': '1', 'memory': '512Mi'}
- `goff`: image `gitea.wayfinderak.com/wayfinderak/goff:latest`; env: DATABASE_URL, DISCORDGO_TOKEN, GOFF_EMAIL_USERNAME, GOFF_EMAIL_PASSWORD; ports: none; requests: {'cpu': '1', 'memory': '512Mi'}; limits: {'cpu': '2', 'memory': '1Gi'}
## Portainer files
- `portainer-stack.yml` - Docker Compose stack to paste/use in Portainer.
- `portainer-app.env` - bot runtime secrets/env.
## Portainer database connection
This Portainer stack does not include pgbouncer. `DATABASE_URL` in `portainer-app.env` points directly at the external PostgreSQL service copied from the Kubernetes pgbouncer upstream URL.
Regular → Executable
View File
+8 -9
View File
@@ -4,15 +4,15 @@ import (
"fmt"
"log"
"gitea.wayfinderak.com/wayfinderak/goff/internal/exts"
"gitea.wayfinderak.com/wayfinderak/goff/internal/exts/guild_management"
"gitea.wayfinderak.com/wayfinderak/goff/internal/exts/logging"
"gitea.wayfinderak.com/wayfinderak/goff/internal/exts/tasks"
"gitea.wayfinderak.com/wayfinderak/goff/internal/exts/user_management"
"gitea.wayfinderak.com/wayfinderak/goff/internal/postgres"
"gitea.wayfinderak.com/wayfinderak/goff/internal/services"
"gitea.wayfinderak.com/wayfinderak/goff/pkg/email"
"github.com/dustinpianalto/disgoman"
"github.com/dustinpianalto/goff/internal/exts"
"github.com/dustinpianalto/goff/internal/exts/guild_management"
"github.com/dustinpianalto/goff/internal/exts/logging"
"github.com/dustinpianalto/goff/internal/exts/tasks"
"github.com/dustinpianalto/goff/internal/exts/user_management"
"github.com/dustinpianalto/goff/internal/postgres"
"github.com/dustinpianalto/goff/internal/services"
"github.com/dustinpianalto/goff/pkg/email"
//"github.com/MikeModder/anpan"
"os"
@@ -124,7 +124,6 @@ func getPrefixes(guildID string) []string {
log.Println(err)
return []string{"Go.", "go."}
}
defer rows.Close()
var prefixes []string
for rows.Next() {
var prefix string
+1 -11
View File
@@ -22,7 +22,7 @@ spec:
spec:
containers:
- name: pgbouncer
image: timoha/pgbouncer:1.15.0
image: timoha/pgbouncer
resources:
requests:
memory: "256Mi"
@@ -36,16 +36,6 @@ spec:
secretKeyRef:
name: goff
key: pgbouncer_url
- name: SERVER_TLS_SSLMODE
valueFrom:
secretKeyRef:
name: goff
key: pgbouncer_ssl
- name: AUTH_TYPE
valueFrom:
secretKeyRef:
name: goff
key: pgbouncer_auth
ports:
- containerPort: 5432
- name: goff
-10
View File
@@ -1,10 +0,0 @@
services:
goff:
image: ${IMAGE:-gitea.wayfinderak.com/wayfinderak/goff:${IMAGE_TAG:-latest}}
container_name: goff
restart: unless-stopped
environment:
DATABASE_URL: ${DATABASE_URL}
DISCORDGO_TOKEN: ${DISCORDGO_TOKEN}
GOFF_EMAIL_USERNAME: ${GOFF_EMAIL_USERNAME}
GOFF_EMAIL_PASSWORD: ${GOFF_EMAIL_PASSWORD}
+1 -1
View File
@@ -1,4 +1,4 @@
module gitea.wayfinderak.com/wayfinderak/goff
module github.com/dustinpianalto/goff
go 1.14
+2 -2
View File
@@ -6,8 +6,8 @@ import (
"strings"
"github.com/dustinpianalto/disgoman"
"gitea.wayfinderak.com/wayfinderak/goff/internal/postgres"
"gitea.wayfinderak.com/wayfinderak/goff/internal/services"
"github.com/dustinpianalto/goff/internal/postgres"
"github.com/dustinpianalto/goff/internal/services"
)
// Guild management commands
@@ -5,7 +5,7 @@ import (
"log"
"github.com/bwmarrin/discordgo"
"gitea.wayfinderak.com/wayfinderak/goff/internal/postgres"
"github.com/dustinpianalto/goff/internal/postgres"
)
func OnMessageUpdate(session *discordgo.Session, m *discordgo.MessageUpdate) {
+8 -8
View File
@@ -2,15 +2,15 @@ package exts
import (
"github.com/dustinpianalto/disgoman"
"gitea.wayfinderak.com/wayfinderak/goff/internal/exts/fun"
"gitea.wayfinderak.com/wayfinderak/goff/internal/exts/guild_management"
"gitea.wayfinderak.com/wayfinderak/goff/internal/exts/roles"
"gitea.wayfinderak.com/wayfinderak/goff/internal/exts/tags"
"gitea.wayfinderak.com/wayfinderak/goff/internal/exts/tasks"
"gitea.wayfinderak.com/wayfinderak/goff/internal/exts/user_management"
"gitea.wayfinderak.com/wayfinderak/goff/internal/exts/utils"
"github.com/dustinpianalto/goff/internal/exts/fun"
"github.com/dustinpianalto/goff/internal/exts/guild_management"
"github.com/dustinpianalto/goff/internal/exts/roles"
"github.com/dustinpianalto/goff/internal/exts/tags"
"github.com/dustinpianalto/goff/internal/exts/tasks"
"github.com/dustinpianalto/goff/internal/exts/user_management"
"github.com/dustinpianalto/goff/internal/exts/utils"
"gitea.wayfinderak.com/wayfinderak/goff/internal/exts/p_interpreter"
"github.com/dustinpianalto/goff/internal/exts/p_interpreter"
)
func AddCommandHandlers(h *disgoman.CommandManager) {
+1 -1
View File
@@ -4,7 +4,7 @@ import (
"fmt"
"github.com/bwmarrin/discordgo"
"gitea.wayfinderak.com/wayfinderak/goff/internal/postgres"
"github.com/dustinpianalto/goff/internal/postgres"
)
var LoggingChannel = make(chan *LogEvent, 10)
+3 -3
View File
@@ -7,9 +7,9 @@ import (
"github.com/bwmarrin/discordgo"
"github.com/dustinpianalto/disgoman"
"gitea.wayfinderak.com/wayfinderak/goff"
"gitea.wayfinderak.com/wayfinderak/goff/internal/postgres"
"gitea.wayfinderak.com/wayfinderak/goff/internal/services"
"github.com/dustinpianalto/goff"
"github.com/dustinpianalto/goff/internal/postgres"
"github.com/dustinpianalto/goff/internal/services"
)
var MakeRoleSelfAssignableCommand = &disgoman.Command{
+3 -3
View File
@@ -7,9 +7,9 @@ import (
"strings"
"github.com/dustinpianalto/disgoman"
"gitea.wayfinderak.com/wayfinderak/goff"
"gitea.wayfinderak.com/wayfinderak/goff/internal/postgres"
"gitea.wayfinderak.com/wayfinderak/goff/internal/services"
"github.com/dustinpianalto/goff"
"github.com/dustinpianalto/goff/internal/postgres"
"github.com/dustinpianalto/goff/internal/services"
)
var AddTagCommand = &disgoman.Command{
+1 -1
View File
@@ -6,7 +6,7 @@ import (
"time"
"github.com/bwmarrin/discordgo"
"gitea.wayfinderak.com/wayfinderak/goff/internal/postgres"
"github.com/dustinpianalto/goff/internal/postgres"
)
type Task struct {
+1 -1
View File
@@ -7,7 +7,7 @@ import (
"time"
"github.com/dustinpianalto/disgoman"
"gitea.wayfinderak.com/wayfinderak/goff/internal/postgres"
"github.com/dustinpianalto/goff/internal/postgres"
"github.com/olebedev/when"
"github.com/olebedev/when/rules/common"
"github.com/olebedev/when/rules/en"
+2 -2
View File
@@ -4,8 +4,8 @@ import (
"log"
"github.com/bwmarrin/discordgo"
"gitea.wayfinderak.com/wayfinderak/goff"
"gitea.wayfinderak.com/wayfinderak/goff/internal/services"
"github.com/dustinpianalto/goff"
"github.com/dustinpianalto/goff/internal/services"
)
func OnGuildMemberAdd(s *discordgo.Session, member *discordgo.GuildMemberAdd) {
@@ -7,8 +7,8 @@ import (
"time"
"github.com/bwmarrin/discordgo"
"gitea.wayfinderak.com/wayfinderak/goff/internal/discord_utils"
"gitea.wayfinderak.com/wayfinderak/goff/internal/postgres"
"github.com/dustinpianalto/goff/internal/discord_utils"
"github.com/dustinpianalto/goff/internal/postgres"
)
func OnGuildMemberAddLogging(s *discordgo.Session, member *discordgo.GuildMemberAdd) {
@@ -8,7 +8,7 @@ import (
"github.com/bwmarrin/discordgo"
"github.com/dustinpianalto/disgoman"
"gitea.wayfinderak.com/wayfinderak/goff/internal/exts/logging"
"github.com/dustinpianalto/goff/internal/exts/logging"
)
var KickUserCommand = &disgoman.Command{
+3 -3
View File
@@ -9,7 +9,7 @@ import (
"github.com/bwmarrin/discordgo"
"github.com/dustinpianalto/disgoman"
"gitea.wayfinderak.com/wayfinderak/goff/internal/discord_utils"
"github.com/dustinpianalto/goff/internal/discord_utils"
)
var PingCommand = &disgoman.Command{
@@ -80,9 +80,9 @@ var GitCommand = &disgoman.Command{
func gitCommandFunc(ctx disgoman.Context, _ []string) {
embed := &discordgo.MessageEmbed{
Title: "Hi there, my code is on Gitea",
Title: "Hi there, My code is on Github",
Color: 0,
URL: "https://gitea.wayfinderak.com/wayfinderak/goff",
URL: "https://github.com/dustinpianalto/Goff",
}
_, err := ctx.Session.ChannelMessageSendEmbed(ctx.Channel.ID, embed)
if err != nil {
+19 -26
View File
@@ -4,7 +4,6 @@ import (
"database/sql"
"fmt"
"log"
"time"
_ "github.com/lib/pq"
)
@@ -17,23 +16,17 @@ func ConnectDatabase(dbConnString string) {
db, err := sql.Open("postgres", dbConnString)
if err != nil {
panic(fmt.Sprintf("Can't connect to the database. %v", err))
} else {
fmt.Println("Database Connected.")
}
db.SetMaxOpenConns(5)
db.SetMaxIdleConns(2)
db.SetConnMaxLifetime(30 * time.Minute)
db.SetConnMaxIdleTime(5 * time.Minute)
if err = db.Ping(); err != nil {
panic(fmt.Sprintf("Can't ping the database. %v", err))
}
fmt.Println("Database Connected.")
db.SetMaxOpenConns(75) // The RDS instance has a max of 75 open connections
db.SetMaxIdleConns(5)
db.SetConnMaxLifetime(300)
DB = db
}
func InitializeDatabase() {
_, err := DB.Exec("CREATE TABLE IF NOT EXISTS users(" +
_, err := DB.Query("CREATE TABLE IF NOT EXISTS users(" +
"id varchar(30) primary key," +
"banned bool not null default false," +
"logging bool not null default true," +
@@ -45,7 +38,7 @@ func InitializeDatabase() {
if err != nil {
fmt.Println(err)
}
_, err = DB.Exec("CREATE TABLE IF NOT EXISTS guilds(" +
_, err = DB.Query("CREATE TABLE IF NOT EXISTS guilds(" +
"id varchar(30) primary key," +
"welcome_message varchar(1000) NOT NULL DEFAULT ''," +
"goodbye_message varchar(1000) NOT NULL DEFAULT ''," +
@@ -55,14 +48,14 @@ func InitializeDatabase() {
if err != nil {
fmt.Println(err)
}
_, err = DB.Exec("CREATE TABLE IF NOT EXISTS prefixes(" +
_, err = DB.Query("CREATE TABLE IF NOT EXISTS prefixes(" +
"id serial primary key," +
"prefix varchar(10) not null unique default 'Go.'" +
")")
if err != nil {
fmt.Println(err)
}
_, err = DB.Exec("CREATE TABLE IF NOT EXISTS tags(" +
_, err = DB.Query("CREATE TABLE IF NOT EXISTS tags(" +
"id serial primary key," +
"tag varchar(100) not null unique," +
"content varchar(1000) not null," +
@@ -73,21 +66,21 @@ func InitializeDatabase() {
if err != nil {
fmt.Println(err)
}
_, err = DB.Exec("CREATE TABLE IF NOT EXISTS x_users_guilds(" +
_, err = DB.Query("CREATE TABLE IF NOT EXISTS x_users_guilds(" +
"guild_id varchar(30) not null references guilds(id)," +
"user_id varchar(30) not null references users(id)" +
")")
if err != nil {
fmt.Println(err)
}
_, err = DB.Exec("CREATE TABLE IF NOT EXISTS x_guilds_prefixes(" +
_, err = DB.Query("CREATE TABLE IF NOT EXISTS x_guilds_prefixes(" +
"guild_id varchar(30) not null references guilds(id)," +
"prefix_id int not null references prefixes(id)" +
")")
if err != nil {
fmt.Println(err)
}
_, err = DB.Exec("CREATE TABLE IF NOT EXISTS tasks(" +
_, err = DB.Query("CREATE TABLE IF NOT EXISTS tasks(" +
"id serial primary key," +
"type varchar(10) not null," +
"content text not null," +
@@ -101,7 +94,7 @@ func InitializeDatabase() {
if err != nil {
fmt.Println(err)
}
_, err = DB.Exec(`CREATE TABLE IF NOT EXISTS postfixes(
_, err = DB.Query(`CREATE TABLE IF NOT EXISTS postfixes(
id serial primary key,
name varchar(100) not null,
time timestamp not null default NOW())`)
@@ -126,37 +119,37 @@ func InitializeDatabase() {
}
func LoadTestData() {
_, err := DB.Exec("INSERT INTO users (id, banned, logging, steam_id, is_active, is_staff, is_admin) values " +
_, err := DB.Query("INSERT INTO users (id, banned, logging, steam_id, is_active, is_staff, is_admin) values " +
"('351794468870946827', false, true, '76561198024193239', true, true, true)," +
"('692908139506434065', false, true, '', true, false, false)," +
"('396588996706304010', false, true, '', true, true, false)")
if err != nil {
fmt.Println(err)
}
_, err = DB.Exec("INSERT INTO guilds (id, welcome_message, goodbye_message) VALUES " +
_, err = DB.Query("INSERT INTO guilds (id, welcome_message, goodbye_message) VALUES " +
"('265828729970753537', 'Hey there is someone new here.', 'Well fine then... Just leave without saying goodbye')")
if err != nil {
fmt.Println(err)
}
_, err = DB.Exec("INSERT INTO prefixes (prefix) VALUES ('Godev.'), ('godev.'), ('godev,')")
_, err = DB.Query("INSERT INTO prefixes (prefix) VALUES ('Godev.'), ('godev.'), ('godev,')")
if err != nil {
fmt.Println(err)
}
_, err = DB.Exec("INSERT INTO x_users_guilds (guild_id, user_id) VALUES " +
_, err = DB.Query("INSERT INTO x_users_guilds (guild_id, user_id) VALUES " +
"('265828729970753537', '351794468870946827')," +
"('265828729970753537', '692908139506434065')," +
"('265828729970753537', '396588996706304010')")
if err != nil {
fmt.Println(err)
}
_, err = DB.Exec("INSERT INTO x_guilds_prefixes (guild_id, prefix_id) VALUES " +
_, err = DB.Query("INSERT INTO x_guilds_prefixes (guild_id, prefix_id) VALUES " +
"('265828729970753537', 1)," +
"('265828729970753537', 2)," +
"('265828729970753537', 3)")
if err != nil {
fmt.Println(err)
}
_, err = DB.Exec("INSERT INTO tags (tag, content, creator, guild_id) VALUES " +
_, err = DB.Query("INSERT INTO tags (tag, content, creator, guild_id) VALUES " +
"('test', 'This is a test of the tag system', '351794468870946827', '265828729970753537')")
if err != nil {
fmt.Println(err)
+1 -1
View File
@@ -4,7 +4,7 @@ import (
"database/sql"
"log"
"gitea.wayfinderak.com/wayfinderak/goff"
"github.com/dustinpianalto/goff"
)
type GuildService struct {
-2
View File
@@ -47,10 +47,8 @@ func RunPostfixes() {
continue
}
if rows.Next() {
rows.Close()
continue
} else {
rows.Close()
err := postfix.Invoke(false)
if err != nil {
continue
+1 -1
View File
@@ -4,7 +4,7 @@ import (
"database/sql"
"log"
"gitea.wayfinderak.com/wayfinderak/goff"
"github.com/dustinpianalto/goff"
)
type RoleService struct {
+1 -1
View File
@@ -3,7 +3,7 @@ package postgres
import (
"database/sql"
"gitea.wayfinderak.com/wayfinderak/goff"
"github.com/dustinpianalto/goff"
)
type UserService struct {
+1 -1
View File
@@ -1,6 +1,6 @@
package services
import "gitea.wayfinderak.com/wayfinderak/goff"
import "github.com/dustinpianalto/goff"
var UserService goff.UserService
var GuildService goff.GuildService
+1 -1
View File
@@ -9,7 +9,7 @@ import (
"time"
"github.com/bwmarrin/discordgo"
"gitea.wayfinderak.com/wayfinderak/goff/pkg/puzzles"
"github.com/dustinpianalto/goff/pkg/puzzles"
imap "github.com/emersion/go-imap"
"github.com/emersion/go-imap/client"
"github.com/emersion/go-message/mail"
+2 -2
View File
@@ -8,8 +8,8 @@ import (
"time"
"github.com/bwmarrin/discordgo"
"gitea.wayfinderak.com/wayfinderak/goff"
"gitea.wayfinderak.com/wayfinderak/goff/internal/postgres"
"github.com/dustinpianalto/goff"
"github.com/dustinpianalto/goff/internal/postgres"
"github.com/emersion/go-message/mail"
)
-4
View File
@@ -1,4 +0,0 @@
DATABASE_URL=postgresql://USER:PASSWORD@HOST:5432/goff?sslmode=disable
DISCORDGO_TOKEN=replace-me
GOFF_EMAIL_USERNAME=replace-me
GOFF_EMAIL_PASSWORD=replace-me
-9
View File
@@ -1,9 +0,0 @@
services:
goff:
image: gitea.wayfinderak.com/wayfinderak/goff:latest
container_name: goff
restart: unless-stopped
env_file:
- ./portainer-app.env
mem_limit: 1g
cpus: "2.0"
-39
View File
@@ -1,39 +0,0 @@
#!/usr/bin/env bash
# Keep required jobs alive; only skip reviewed non-runtime documentation paths.
set -euo pipefail
base="${DELIVERY_BASE:-}"
head="$(git rev-parse HEAD)"
run=true
if [[ "${DELIVERY_REF:-}" != refs/tags/* && "$head" == "${DELIVERY_SHA:-}" && "${DELIVERY_EVENT:-}" =~ ^(push|pull_request)$ && "$base" =~ ^[0-9a-f]{40}$ && "$base" != 0000000000000000000000000000000000000000 ]]; then
if ! git cat-file -e "$base^{commit}" 2>/dev/null; then
if [[ -n "${DELIVERY_FETCH_TOKEN:-}" ]]; then
git -c "http.extraHeader=Authorization: token ${DELIVERY_FETCH_TOKEN}" fetch --quiet --depth=1 origin "$base" >/dev/null 2>&1 || true
else
git fetch --quiet --depth=1 origin "$base" >/dev/null 2>&1 || true
fi
fi
if git cat-file -e "$base^{commit}" 2>/dev/null; then
paths="$(mktemp)"
trap 'rm -f -- "$paths"' EXIT
# Snapshot comparison is conservative when main advanced during a PR.
# Both rename sides remain visible, including names containing newlines.
if git diff --no-renames --name-only -z "$base" "$head" > "$paths"; then
run=false
while IFS= read -r -d '' path; do
case "$path" in
README.md|CHANGELOG.md|LICENSE|LICENSE.md) ;;
*) run=true; break ;;
esac
done < "$paths"
fi
fi
fi
if [[ "$run" == false ]]; then
echo 'Only reviewed non-runtime documentation changed; build and validation are not applicable.'
else
echo 'Runtime, unknown inputs, or unavailable event history: run required validation.'
fi
if [[ -n "${GITHUB_OUTPUT:-}" ]]; then
echo "run=$run" >> "$GITHUB_OUTPUT"
fi
printf '%s\n' "$run"