Compare commits

...
Sign in to create a new pull request.

38 commits
fsm ... master

Author SHA1 Message Date
20b2e75c9c fix deps (3)
All checks were successful
default / build-and-deploy (push) Successful in 56s
2025-03-30 20:25:30 +03:00
c8539b048e fix deps (2)
Some checks failed
default / build-and-deploy (push) Failing after 50s
2025-03-30 20:23:44 +03:00
39a5d2543b fix deps
Some checks failed
default / build-and-deploy (push) Failing after 53s
2025-03-30 20:22:16 +03:00
fb6596f72f fix deploy
Some checks failed
default / build-and-deploy (push) Failing after 51s
2025-03-30 20:19:42 +03:00
d28f3318e4 fix docker push
All checks were successful
default / build-and-deploy (push) Successful in 49s
2025-03-30 18:36:13 +03:00
440eaf8853 use actions again
Some checks failed
default / build-and-deploy (push) Failing after 53s
2025-03-30 18:32:19 +03:00
ee2b6b522c fix image case
Some checks failed
default / build-and-deploy (push) Failing after 48s
2025-03-30 18:27:11 +03:00
734c8cc199 fix build calls
Some checks failed
default / build-and-deploy (push) Failing after 8s
2025-03-30 18:23:04 +03:00
1b5da461ef try dind again
Some checks failed
default / build-and-deploy (push) Failing after 7s
2025-03-30 18:20:59 +03:00
11add65d0e another attempt
Some checks failed
default / build-and-deploy (push) Failing after 16s
2025-03-30 18:17:56 +03:00
ccd6dc8ce0 start docker
Some checks failed
default / build-and-deploy (push) Failing after 17s
2025-03-30 18:15:23 +03:00
092207c172 docker rootless
Some checks failed
default / build-and-deploy (push) Failing after 17s
2025-03-30 18:14:24 +03:00
f4d008b25c change docker installer
Some checks failed
default / build-and-deploy (push) Failing after 21s
2025-03-30 18:12:28 +03:00
396cbb1911 fix apt-get install
Some checks failed
default / build-and-deploy (push) Failing after 7s
2025-03-30 18:10:41 +03:00
1626c0ead5 try using docker inside Node again
Some checks failed
default / build-and-deploy (push) Failing after 3s
2025-03-30 18:10:14 +03:00
5c7fcfbc04 another attempt at fixing
Some checks failed
default / build-and-deploy (push) Failing after 7s
2025-03-30 18:03:58 +03:00
8c4aaa65fe docker start
Some checks failed
default / build-and-deploy (push) Has been cancelled
2025-03-30 17:52:02 +03:00
65d5ae07e3 remove useless wait
Some checks failed
default / build-and-deploy (push) Failing after 3s
2025-03-30 17:47:56 +03:00
6bbd97c9d9 fix for docker:dind node installation
Some checks failed
default / build-and-deploy (push) Has been cancelled
2025-03-30 17:47:15 +03:00
d16c51d01a half-hearted node setup
Some checks failed
default / build-and-deploy (push) Failing after 1s
2025-03-30 17:46:20 +03:00
966e8d2d7a move docker:dind back to the job level
Some checks failed
default / build-and-deploy (push) Failing after 1s
2025-03-30 17:44:49 +03:00
7954c3d31d add wait for docker
Some checks failed
default / build-and-deploy (push) Has been cancelled
2025-03-30 17:42:09 +03:00
67cc9d0463 fix deploy
Some checks failed
default / build-and-deploy (push) Failing after 2s
2025-03-30 17:37:23 +03:00
781f30207d simplify docker use
Some checks failed
default / build-and-deploy (push) Failing after 4s
2025-03-30 17:36:01 +03:00
5d53280e3c attempt to use host docker
Some checks failed
default / build-and-deploy (push) Failing after 4s
2025-03-30 17:32:16 +03:00
a099c6fec6 rollback
Some checks failed
default / build-and-deploy (push) Failing after 4s
2025-03-30 17:27:18 +03:00
93eb243167 another attempt at fixing pipeline
Some checks failed
default / build-and-deploy (push) Failing after 13s
2025-03-30 17:23:05 +03:00
1cd7e8ea5e try to use docker inside node image
Some checks failed
default / build-and-deploy (push) Failing after 13s
2025-03-30 17:17:57 +03:00
0e1cb1e4d9 env passthrough
Some checks failed
default / build-and-deploy (push) Failing after 10s
2025-03-30 17:09:54 +03:00
1868e82330 use docker-in-docker
Some checks failed
default / build-and-deploy (push) Failing after 8s
2025-03-30 17:07:00 +03:00
d1dd661b9a replace drone ci with actions
Some checks failed
default / build-and-deploy (push) Failing after 25s
2025-03-30 17:03:27 +03:00
1e6022df08 vote for the task via reply
All checks were successful
continuous-integration/drone/push Build is passing
2024-05-23 15:30:10 +03:00
9a020253de fix secret population
All checks were successful
continuous-integration/drone/push Build is passing
2024-05-23 15:13:10 +03:00
090a1cdc33 fix secret population
All checks were successful
continuous-integration/drone/push Build is passing
2024-05-23 15:10:37 +03:00
d4b7880715 fix autodeploy
Some checks failed
continuous-integration/drone/push Build is failing
2024-05-23 15:07:05 +03:00
7997128fd0 autodeploy
Some checks reported errors
continuous-integration/drone/push Build encountered an error
2024-05-23 15:01:49 +03:00
5ffbac8dd2 fix various bugs
All checks were successful
continuous-integration/drone/push Build is passing
2024-05-23 14:22:44 +03:00
be2cc7ddfa fix broken create
All checks were successful
continuous-integration/drone/push Build is passing
2024-05-23 13:55:05 +03:00
7 changed files with 73 additions and 33 deletions

View file

@ -1,23 +0,0 @@
kind: pipeline
name: default
steps:
- name: docker
image: plugins/docker
settings:
registry:
from_secret: CI_REGISTRY
username:
from_secret: CI_REGISTRY_USER
password:
from_secret: CI_REGISTRY_PASSWORD
repo:
from_secret: CI_APP_IMAGE
tags:
- latest
trigger:
event:
- push
branch:
- master

View file

@ -0,0 +1,51 @@
name: default
on:
push:
branches:
- master
jobs:
build-and-deploy:
runs-on: docker
container:
image: docker:dind
options: --privileged
steps:
- name: Set Up Dependencies
run: apk add --no-cache nodejs bash curl
- name: Start Docker
run: |
dockerd-entrypoint.sh &
until docker info > /dev/null 2>&1; do
echo "Waiting for Docker daemon..."
sleep 1
done
- name: Checkout Repository
uses: actions/checkout@v4
- name: Login to Docker Registry
uses: docker/login-action@v3
with:
registry: git.neur0tx.site
username: ${{ github.actor }}
password: ${{ secrets.DOCKER_PUSH_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: git.neur0tx.site/neur0toxine/vegapokerbot:latest
- name: Deploy
uses: actions/ssh-action@v1
with:
host: ${{ secrets.DEPLOYER_HOST }}
username: ${{ secrets.DEPLOYER_USERNAME }}
key: ${{ secrets.DEPLOYER_KEY }}
port: ${{ secrets.DEPLOYER_PORT }}
script: bash vegapokerbot.sh

View file

@ -24,7 +24,7 @@ func (c *Chat) ByID(id uint64) (*model.Chat, error) {
func (c *Chat) ByTelegramID(id int64) (*model.Chat, error) { func (c *Chat) ByTelegramID(id int64) (*model.Chat, error) {
var chat model.Chat var chat model.Chat
if err := c.db.Model(model.Chat{TelegramID: id}).First(&chat).Error; err != nil { if err := c.db.Model(&model.Chat{}).Where("telegram_id = ?", id).First(&chat).Error; err != nil {
return nil, util.HandleRecordNotFound(err) return nil, util.HandleRecordNotFound(err)
} }
return &chat, nil return &chat, nil
@ -32,7 +32,7 @@ func (c *Chat) ByTelegramID(id int64) (*model.Chat, error) {
func (c *Chat) ByTelegramIDWithIntegrations(id int64) (*model.Chat, error) { func (c *Chat) ByTelegramIDWithIntegrations(id int64) (*model.Chat, error) {
var chat model.Chat var chat model.Chat
if err := c.db.Model(model.Chat{TelegramID: id}).Preload("Integrations").First(&chat).Error; err != nil { if err := c.db.Model(&model.Chat{}).Where("telegram_id = ?", id).Preload("Integrations").First(&chat).Error; err != nil {
return nil, util.HandleRecordNotFound(err) return nil, util.HandleRecordNotFound(err)
} }
return &chat, nil return &chat, nil
@ -47,6 +47,9 @@ func (c *Chat) ByIDWithIntegrations(id uint64) (*model.Chat, error) {
} }
func (c *Chat) Save(chat *model.Chat) error { func (c *Chat) Save(chat *model.Chat) error {
if chat.ID == 0 {
return c.db.Create(chat).Error
}
return c.db.Model(chat).Save(chat).Error return c.db.Model(chat).Save(chat).Error
} }

View file

@ -16,13 +16,16 @@ func NewIntegration(db *gorm.DB) *Integration {
func (r *Integration) LoadForChatAndType(chatID uint64, typ model.IntegrationType) (*model.Integration, error) { func (r *Integration) LoadForChatAndType(chatID uint64, typ model.IntegrationType) (*model.Integration, error) {
var integration model.Integration var integration model.Integration
if err := r.db.Model(model.Integration{ChatID: chatID, Type: typ}).First(&integration).Error; err != nil { if err := r.db.Model(&model.Integration{}).Where(`chat_id = ? and "type" = ?`, chatID, typ).First(&integration).Error; err != nil {
return nil, util.HandleRecordNotFound(err) return nil, util.HandleRecordNotFound(err)
} }
return &integration, nil return &integration, nil
} }
func (r *Integration) Save(integration *model.Integration) error { func (r *Integration) Save(integration *model.Integration) error {
if integration.ID == 0 {
return r.db.Create(integration).Error
}
return r.db.Model(integration).Save(integration).Error return r.db.Model(integration).Save(integration).Error
} }

View file

@ -24,7 +24,7 @@ func (u *User) ByID(id uint64) (*model.User, error) {
func (u *User) ByTelegramID(id int64) (*model.User, error) { func (u *User) ByTelegramID(id int64) (*model.User, error) {
var user model.User var user model.User
if err := u.db.Model(model.User{TelegramID: id}).First(&user).Error; err != nil { if err := u.db.Model(&model.User{}).Where("telegram_id = ?", id).First(&user).Error; err != nil {
return nil, util.HandleRecordNotFound(err) return nil, util.HandleRecordNotFound(err)
} }
return &user, nil return &user, nil
@ -32,7 +32,7 @@ func (u *User) ByTelegramID(id int64) (*model.User, error) {
func (u *User) ByTelegramIDs(ids []int64) ([]model.User, error) { func (u *User) ByTelegramIDs(ids []int64) ([]model.User, error) {
var users []model.User var users []model.User
if err := u.db.Model(model.User{}).Where("telegram_id in (?)", ids).Find(&users).Error; err != nil { if err := u.db.Model(&model.User{}).Where("telegram_id in (?)", ids).Find(&users).Error; err != nil {
return nil, util.HandleRecordNotFound(err) return nil, util.HandleRecordNotFound(err)
} }
return users, nil return users, nil
@ -47,5 +47,8 @@ func (u *User) ByIDWithChats(id uint64) (*model.User, error) {
} }
func (u *User) Save(user *model.User) error { func (u *User) Save(user *model.User) error {
if user.ID == 0 {
return u.db.Create(user).Error
}
return u.db.Model(user).Save(user).Error return u.db.Model(user).Save(user).Error
} }

View file

@ -41,18 +41,21 @@ func (h *Poll) Handle(wh telego.Update) error {
return err return err
} }
loc := h.Localizer(user.Language) loc := h.Localizer(user.Language)
_ = loc
if len(wh.Message.Entities) == 0 || if len(wh.Message.Entities) == 0 ||
(len(wh.Message.Entities) > 0 && wh.Message.Entities[0].Type != telego.EntityTypeBotCommand) || (len(wh.Message.Entities) > 0 && wh.Message.Entities[0].Type != telego.EntityTypeBotCommand) ||
(len(wh.Message.Entities) > 0 && wh.Message.Entities[0].Offset != 0) { (len(wh.Message.Entities) > 0 && wh.Message.Entities[0].Offset != 0) {
return nil return nil
} }
taskInfo := strings.TrimSpace(wh.Message.Text[wh.Message.Entities[0].Length:])
if taskInfo == "" && wh.Message.ReplyToMessage != nil {
taskInfo = wh.Message.ReplyToMessage.Text
}
var ( var (
taskID int taskID int
canRedmine bool canRedmine bool
) )
taskInfo := strings.TrimSpace(wh.Message.Text[wh.Message.Entities[0].Length:])
if taskInfo != "" { if taskInfo != "" {
for _, integrationData := range chat.Integrations { for _, integrationData := range chat.Integrations {
id, info := integration.New(integrationData, h.App.Log()).GetTaskInfo(taskInfo) id, info := integration.New(integrationData, h.App.Log()).GetTaskInfo(taskInfo)

View file

@ -44,7 +44,7 @@ func (p Payload) Vote() (val Vote) {
} }
func (p Payload) KeyboardChoice() (val KBChooserData) { func (p Payload) KeyboardChoice() (val KBChooserData) {
if p.Action != PayloadActionVote { if p.Action != PayloadActionChooseKeyboard {
return return
} }
_ = json.Unmarshal(p.Data, &val) _ = json.Unmarshal(p.Data, &val)
@ -65,7 +65,7 @@ type Member struct {
} }
type KBChooserData struct { type KBChooserData struct {
Type uint8 `json:"k"` Type int64 `json:"k"`
} }
type Vote struct { type Vote struct {
@ -83,7 +83,7 @@ func NewKeyboardChooserPayload(userID, chatID int64, kbType uint8) *Payload {
User: userID, User: userID,
Chat: chatID, Chat: chatID,
Data: marshal(KBChooserData{ Data: marshal(KBChooserData{
Type: kbType, Type: int64(kbType),
}), }),
} }
} }