https://github.com/grokify/groupbot
A Glipbot for managing team member information backed by a Google Sheet - https://glip.com
https://github.com/grokify/groupbot
Last synced: 8 months ago
JSON representation
A Glipbot for managing team member information backed by a Google Sheet - https://glip.com
- Host: GitHub
- URL: https://github.com/grokify/groupbot
- Owner: grokify
- License: mit
- Created: 2018-04-29T01:39:13.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2025-06-23T08:01:08.000Z (12 months ago)
- Last Synced: 2025-06-23T08:42:58.874Z (12 months ago)
- Language: Go
- Homepage:
- Size: 428 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GroupBot
[![Build Status][build-status-svg]][build-status-url]
[![Lint Status][lint-status-svg]][lint-status-url]
[![Go Report Card][goreport-svg]][goreport-url]
[![Docs][docs-godoc-svg]][docs-godoc-url]
[![License][license-svg]][license-url]
[build-status-svg]: https://github.com/grokify/groupbot/actions/workflows/ci.yaml/badge.svg?branch=master
[build-status-url]: https://github.com/grokify/groupbot/actions/workflows/ci.yaml
[lint-status-svg]: https://github.com/grokify/groupbot/actions/workflows/lint.yaml/badge.svg?branch=master
[lint-status-url]: https://github.com/grokify/groupbot/actions/workflows/lint.yaml
[goreport-svg]: https://goreportcard.com/badge/github.com/grokify/groupbot
[goreport-url]: https://goreportcard.com/report/github.com/grokify/groupbot
[docs-godoc-svg]: https://img.shields.io/badge/docs-godoc-blue.svg
[docs-godoc-url]: https://pkg.go.dev/github.com/grokify/groupbot
[license-svg]: https://img.shields.io/badge/license-MIT-blue.svg
[license-url]: https://github.com/grokify/groupbot/blob/master/LICENSE
## Overview
GroupBot is a bot that allows you to share information about yourself with the team. It was initially created to share information for ordering tshirts. It currently stores data in a Google Sheet.
## Configuration
Set the following environment variables:
| Variable | Type | Required | Notes |
|----------|------|----------|-------|
| `GROUPBOT_ENGINE` | string | y | `aws` or `nethttp` |
| `GROUPBOT_PORT` | integer | n | local port number for `net/http` |
| `GROUPBOT_REQUEST_FUZZY_AT_MENTION_MATCH` | boolean | n | Match non-completed at mentions. |
| `GROUPBOT_RESPONSE_AUTO_AT_MENTION` | boolean | n | |
| `GROUPBOT_POST_SUFFIX` | string | n | |
| `GOOGLE_SERVICE_ACCOUNT_JWT` | JSON string | y | |
| `GOOGLE_SPREADSHEET_ID` | string | y | ID as in URL |
| `GOOGLE_SHEET_TITLE_RECORDS` | string | y | sheet title for data records, e.g. `Records` |
| `GOOGLE_SHEET_TITLE_METADATA` | string | y | sheet title for metadata, e.g. `Metadata` |
| `RINGCENTRAL_BOT_ID` | string | y | bot `personId` in Glip |
| `RINGCENTRAL_BOT_NAME` | string | y | bot name in Glip for fuzzy at matching |
| `RINGCENTRAL_SERVER_URL` | string | y | Base API URL, e.g. https://platform.ringcentral.com |
| `RINGCENTRAL_TOKEN_JSON` | JSON string | y | JSON token as returned by `/oauth/token` endpoint |
## Using the AWS Engine
To use the AWS Lambda engine, you need an AWS account. If you don't hae one, the [free trial account](https://aws.amazon.com/s/dm/optimization/server-side-test/free-tier/free_np/) includes 1 million free Lambda requests per month forever and 1 million free API Gateway requests per month for the first year.
### Installation via AWS Lambda
See the AWS docs for deployment:
https://docs.aws.amazon.com/lambda/latest/dg/lambda-go-how-to-create-deployment-package.html
Using the `aws-cli` you can use the following approach:
```
$ cd ./apps/server
$ GOOS=linux go build main.go
$ zip main.zip ./main
# --handler is the path to the executable inside the .zip
$ aws lambda create-function --region us-east-1 --function-name Databot --memory 128 --role arn:aws:iam::account-id:role/execution_role --runtime go1.x --zip-file fileb://main.zip --handler main
```
### Keepalive
In production, there are are reasons why a RingCentral webhook may fail and become blacklisted. These should be tracked down an eliminated. If there are reasons to reenable the webhook, you can deploy the [`rchooks`] RingCentral Lambda keepalive function:
* [`rchooks/apps/keepalive_lambda`](https://github.com/grokify/rchooks/tree/master/apps/keepalive_lambda)