Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ linters-settings:
check-shadowing: true
gocyclo:
# minimal code complexity to report, 30 by default
min-complexity: 20
min-complexity: 30
maligned:
# print struct with more effective memory layout or not, false by default
suggest-new: true
13 changes: 11 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ Those are my commands:
- /groupchatinvitegenerate - Generate groupchat invite link
- /groupchatlist - Groupchat list
- /groupchatmembers - List groupchat members
- /groupchatuserunban - Unban user in groupchat
- /groupchatuserban - Ban user in groupchat
- /groupchatuserunban - Unban user in groupchat
- /groupcreate - Create group
Expand All @@ -40,6 +39,17 @@ Those are my commands:
- /groupundelete - Undelete group
- /help - Display this help
- /me - Your ID/username
- /meetingroomactivate - Activate meetingroom
- /meetingroomblock - Block meetingroom
- /meetingroombook - Book meetingroom
- /meetingroomcreate - Add meetingroom
- /meetingroomdelete - Delete meetingroom
- /meetingroomlist - Return list of meetingrooms
- /meetingroomrebook - Rebook meetingroom
- /meetingroomrename - Rename meetingrooms
- /meetingroomschedule - Return schedule of meetingroom
- /meetingroomscheduleinfo - Return schedule info
- /meetingroomunbook - Unbook meetingroom
- /message - Send message to user
- /plugindisable - Disable plugin
- /pluginenable - Enable plugin
Expand All @@ -58,7 +68,6 @@ Those are my commands:
- [ ] Поздравлять пользователя с днем рождения и уведомлять админов (заранее)

## Идеи для плагинов
- [ ] Переговорки
- [ ] Отпуска
- [ ] Онбординг
- [ ] Контакты
51 changes: 51 additions & 0 deletions clock/clock.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package clock

import (
"fmt"

tgbotapi "gopkg.in/telegram-bot-api.v4"
)

func GenerateClock(command string, hour, minute int, lang string) tgbotapi.InlineKeyboardMarkup {
keyboard := tgbotapi.InlineKeyboardMarkup{}
if hour < 0 {
keyboard = addHours(command, keyboard, lang)
} else {
keyboard = addMinutes(command, hour, keyboard, lang)
}
return keyboard
}

func addHours(command string, keyboard tgbotapi.InlineKeyboardMarkup, lang string) tgbotapi.InlineKeyboardMarkup {
var rowHours []tgbotapi.InlineKeyboardButton
pos := 0
for i := 0; i < 24; i++ {
btn := tgbotapi.NewInlineKeyboardButtonData(fmt.Sprintf("%02d:...", i), fmt.Sprintf("%s %02d", command, i))
rowHours = append(rowHours, btn)
if (pos+1)%6 == 0 {
keyboard.InlineKeyboard = append(keyboard.InlineKeyboard, rowHours)
rowHours = []tgbotapi.InlineKeyboardButton{}
}
pos++
}

keyboard.InlineKeyboard = append(keyboard.InlineKeyboard, rowHours)
return keyboard
}

func addMinutes(command string, hour int, keyboard tgbotapi.InlineKeyboardMarkup, lang string) tgbotapi.InlineKeyboardMarkup {
var rowHours []tgbotapi.InlineKeyboardButton
pos := 0
for i := 0; i < 60; i += 5 {
btn := tgbotapi.NewInlineKeyboardButtonData(fmt.Sprintf("%02d:%02d", hour, i), fmt.Sprintf("%s %02d:%02d", command, hour, i))
rowHours = append(rowHours, btn)
if (pos+1)%4 == 0 {
keyboard.InlineKeyboard = append(keyboard.InlineKeyboard, rowHours)
rowHours = []tgbotapi.InlineKeyboardButton{}
}
pos++
}

keyboard.InlineKeyboard = append(keyboard.InlineKeyboard, rowHours)
return keyboard
}
9 changes: 9 additions & 0 deletions db/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,17 @@ const (
GroupChatAlreadyExists = "groupchat already exists"
GroupChatNotFound = "groupchat not found"

MeetingroomAlreadyExists = "meetingroom already exists"
MeetingroomNotFound = "meetingroom not found"
MeetingroomDeleted = "meetingroom deleted"
MeetingroomBlocked = "meetingroom blocked"

MeetingroomBusy = "meetingroom busy"

Active = "active"
Deleted = "deleted"
Blocked = "blocked"
Enabled = "enabled"
New = "new"
Member = "member"
Admin = "admin"
Expand Down
2 changes: 1 addition & 1 deletion db/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ func QuerySQLList(db *sql.DB, returnModel interface{}, sql string, args ...inter
// StoreTelegramMessage ...
func StoreTelegramMessage(db *sql.DB, message *TelegramMessage) error {
_, err := db.Exec(
"INSERT INTO telegram_messages (telegram_id, message, created_at, is_incoming) VALUES (?, ?, ?, ?);",
`INSERT INTO telegram_messages (telegram_id, message, created_at, is_incoming) VALUES (?, ?, ?, ?);`,
message.TelegramID,
message.Message,
message.Date,
Expand Down
13 changes: 6 additions & 7 deletions db/groupchat.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (

dlog "github.com/amoghe/distillog"
sql "github.com/lazada/sqle"

_ "github.com/mattn/go-sqlite3" // Register some sql
)

Expand Down Expand Up @@ -37,7 +36,7 @@ func (gc *Groupchat) String() string {
// GetGroupchats ...
func GetGroupchats(db *sql.DB, states []string) (groupchats []*Groupchat, err error) {
if len(states) == 0 {
states = []string{"active"}
states = []string{Active}
}

args := make([]interface{}, len(states))
Expand Down Expand Up @@ -109,7 +108,7 @@ func AddGroupChatIfNotExist(db *sql.DB, groupchat *Groupchat) (*Groupchat, error
}

res, err := db.Exec(
"INSERT INTO groupchats (title, telegram_id, invite_link, state) VALUES (?, ?, ?, ?);",
`INSERT INTO groupchats (title, telegram_id, invite_link, state) VALUES (?, ?, ?, ?);`,
groupchat.Title,
groupchat.TelegramID,
groupchat.InviteLink,
Expand All @@ -126,15 +125,15 @@ func AddGroupChatIfNotExist(db *sql.DB, groupchat *Groupchat) (*Groupchat, error

groupchat.CreatedAt = time.Now()

dlog.Debugf("%s (%d) added at %s\n", groupchat.Title, groupchat.ID, groupchat.CreatedAt)
dlog.Debugf(`%s (%d) added at %s\n`, groupchat.Title, groupchat.ID, groupchat.CreatedAt)

return groupchat, nil
}

// UpdateGroupChatInviteLink ...
func UpdateGroupChatInviteLink(db *sql.DB, groupchat *Groupchat) (int64, error) {
result, err := db.Exec(
"UPDATE groupchats SET invite_link = ? WHERE telegram_id = ?;",
`UPDATE groupchats SET invite_link = ? WHERE telegram_id = ?;`,
groupchat.InviteLink,
groupchat.TelegramID)
if err != nil {
Expand All @@ -152,7 +151,7 @@ func UpdateGroupChatInviteLink(db *sql.DB, groupchat *Groupchat) (int64, error)
// UpdateGroupChatTitle ...
func UpdateGroupChatTitle(db *sql.DB, groupchat *Groupchat) (int64, error) {
result, err := db.Exec(
"UPDATE groupchats SET title = ? WHERE telegram_id = ?;",
`UPDATE groupchats SET title = ? WHERE telegram_id = ?;`,
groupchat.Title,
groupchat.TelegramID)
if err != nil {
Expand Down Expand Up @@ -186,7 +185,7 @@ func GetGroupChatByTelegramID(db *sql.DB, groupchat *Groupchat) (*Groupchat, err
// GroupChatDelete ...
func GroupChatDelete(db *sql.DB, groupchat *Groupchat) (bool, error) {
_, err := db.Exec(
"DELETE FROM groupchats WHERE telegram_id = ?;",
`DELETE FROM groupchats WHERE telegram_id = ?;`,
groupchat.TelegramID,
)
if err != nil {
Expand Down
23 changes: 11 additions & 12 deletions db/groups.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (

dlog "github.com/amoghe/distillog"
sql "github.com/lazada/sqle"

_ "github.com/mattn/go-sqlite3" // Register some sql
)

Expand All @@ -28,15 +27,15 @@ func AddGroupIfNotExist(db *sql.DB, group *Group) (*Group, error) {
var returnModel Group

if group.State == "" {
group.State = "active"
group.State = Active
}

result, err := QuerySQLObject(db, returnModel, `SELECT * FROM groups WHERE name = ?;`, group.Name)
if err != nil {
return nil, err
}

if returnModel, ok := result.Interface().(*Group); ok && returnModel.State == "deleted" {
if returnModel, ok := result.Interface().(*Group); ok && returnModel.State == Deleted {
return returnModel, fmt.Errorf(GroupDeleted)
}

Expand All @@ -45,7 +44,7 @@ func AddGroupIfNotExist(db *sql.DB, group *Group) (*Group, error) {
}

res, err := db.Exec(
"INSERT INTO groups (name, state) VALUES (?, ?);",
`INSERT INTO groups (name, state) VALUES (?, ?);`,
group.Name,
group.State,
)
Expand All @@ -60,15 +59,15 @@ func AddGroupIfNotExist(db *sql.DB, group *Group) (*Group, error) {

group.CreatedAt = time.Now()

dlog.Debugf("%s (%d) added at %s\n", group.Name, group.ID, group.CreatedAt)
dlog.Debugf(`%s (%d) added at %s\n`, group.Name, group.ID, group.CreatedAt)

return group, nil
}

// GetGroups ...
func GetGroups(db *sql.DB, states []string) (groups []*Group, err error) {
if len(states) == 0 {
states = []string{"active"}
states = []string{Active}
}

args := make([]interface{}, len(states))
Expand Down Expand Up @@ -103,7 +102,7 @@ ORDER BY
// UpdateGroupState ...
func UpdateGroupState(db *sql.DB, group *Group) (int64, error) {
result, err := db.Exec(
"UPDATE groups SET state = ? WHERE name = ? AND state != ?;",
`UPDATE groups SET state = ? WHERE name = ? AND state != ?;`,
group.State,
group.Name,
group.State)
Expand All @@ -122,7 +121,7 @@ func UpdateGroupState(db *sql.DB, group *Group) (int64, error) {
// UpdateGroupName ...
func UpdateGroupName(db *sql.DB, oldName, newName string) (int64, error) {
result, err := db.Exec(
"UPDATE groups SET name = ? WHERE name = ? AND name != ?;",
`UPDATE groups SET name = ? WHERE name = ? AND name != ?;`,
newName,
oldName,
newName)
Expand Down Expand Up @@ -157,7 +156,7 @@ func GetGroupByName(db *sql.DB, group *Group) (*Group, error) {
// AddGroupGroupChatIfNotExist ...
func AddGroupGroupChatIfNotExist(db *sql.DB, group *Group, groupchat *Groupchat) (bool, error) {
res, err := db.Exec(
"INSERT INTO groups_groupchats (group_id, groupchat_id) VALUES (?, ?);",
`INSERT INTO groups_groupchats (group_id, groupchat_id) VALUES (?, ?);`,
group.ID,
groupchat.ID,
)
Expand All @@ -176,7 +175,7 @@ func AddGroupGroupChatIfNotExist(db *sql.DB, group *Group, groupchat *Groupchat)
// DeleteGroupGroupChat ...
func DeleteGroupGroupChat(db *sql.DB, group *Group, groupchat *Groupchat) (bool, error) {
_, err := db.Exec(
"DELETE FROM groups_groupchats WHERE group_id = ? AND groupchat_id = ?;",
`DELETE FROM groups_groupchats WHERE group_id = ? AND groupchat_id = ?;`,
group.ID,
groupchat.ID,
)
Expand All @@ -190,7 +189,7 @@ func DeleteGroupGroupChat(db *sql.DB, group *Group, groupchat *Groupchat) (bool,
// AddGroupUserIfNotExist ...
func AddGroupUserIfNotExist(db *sql.DB, group *Group, user *User) (bool, error) {
res, err := db.Exec(
"INSERT INTO groups_Users (group_id, user_id) VALUES (?, ?);",
`INSERT INTO groups_Users (group_id, user_id) VALUES (?, ?);`,
group.ID,
user.ID,
)
Expand All @@ -209,7 +208,7 @@ func AddGroupUserIfNotExist(db *sql.DB, group *Group, user *User) (bool, error)
// DeleteGroupUser ...
func DeleteGroupUser(db *sql.DB, group *Group, user *User) (bool, error) {
_, err := db.Exec(
"DELETE FROM groups_Users WHERE group_id = ? AND user_id = ?;",
`DELETE FROM groups_Users WHERE group_id = ? AND user_id = ?;`,
group.ID,
user.ID,
)
Expand Down
Loading