initial commit
This commit is contained in:
commit
e85549fe84
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
/.env
|
||||||
|
/go.sum
|
||||||
|
/.idea/vcs.xml
|
||||||
|
/.idea/modules.xml
|
||||||
|
/go-google-space
|
||||||
|
/.idea/go-google-space.iml
|
||||||
|
.idea/
|
67
README.md
Normal file
67
README.md
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
# Go Google Space Bot
|
||||||
|
|
||||||
|
A simple Go application to send messages to a Google Chat space using its webhook URL.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
To use this application, ensure you have the following installed:
|
||||||
|
1. Go version `1.23` or later.
|
||||||
|
2. A properly configured `.env` file with the following variables:
|
||||||
|
- `SPACE_ID`: The ID of the Google Chat space you want to send messages to.
|
||||||
|
- `KEY`: The key provided in your Google Chat webhook URL.
|
||||||
|
- `TOKEN`: The token provided in your Google Chat webhook URL.
|
||||||
|
|
||||||
|
For more info on setting up Google Chat webhooks, see [Sending Chat messages using webhooks](https://developers.google.com/chat/how-tos/webhooks).
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Clone this repository, navigate into the directory, and build the project:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone <repository-url>
|
||||||
|
cd go-google-space
|
||||||
|
go build -o go-google-space
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Create a `.env` file in the root directory with the following contents:
|
||||||
|
|
||||||
|
```dotenv
|
||||||
|
SPACE_ID=<your-space-id>
|
||||||
|
KEY=<your-key>
|
||||||
|
TOKEN=<your-token>
|
||||||
|
```
|
||||||
|
|
||||||
|
Replace `<your-space-id>`, `<your-key>`, and `<your-token>` with the respective values from your Google Chat webhook URL.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Run the built executable, passing the message you want to send as an argument:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./go-google-space "Hello, Google Chat!"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Example Output
|
||||||
|
|
||||||
|
When the command runs successfully, the message will appear in your configured Google Chat space.
|
||||||
|
|
||||||
|
If any errors occur (e.g., if the `.env` file is missing or the webhook URL configuration is incorrect), error messages will be displayed in the terminal.
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
This project uses the following dependencies:
|
||||||
|
- [godotenv](https://github.com/joho/godotenv) for loading environment variables from a `.env` file.
|
||||||
|
|
||||||
|
To install the dependency, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go get github.com/joho/godotenv
|
||||||
|
```
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is licensed under the MIT License. See the LICENSE file for details.
|
||||||
|
|
||||||
|
---
|
5
go.mod
Normal file
5
go.mod
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
module go-google-space
|
||||||
|
|
||||||
|
go 1.23
|
||||||
|
|
||||||
|
require github.com/joho/godotenv v1.5.1
|
58
main.go
Normal file
58
main.go
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"github.com/joho/godotenv"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
if len(os.Args) < 2 {
|
||||||
|
fmt.Println("Usage: ./go-google-space <message>")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
userMessage := os.Args[1]
|
||||||
|
|
||||||
|
client := &http.Client{}
|
||||||
|
|
||||||
|
err := godotenv.Load()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error loading .env file")
|
||||||
|
}
|
||||||
|
|
||||||
|
chatSpaceID := os.Getenv("SPACE_ID")
|
||||||
|
key := os.Getenv("KEY")
|
||||||
|
token := os.Getenv("TOKEN")
|
||||||
|
url := fmt.Sprintf("https://chat.googleapis.com/v1/spaces/%s/messages?key=%s&token=%s", chatSpaceID, key, token)
|
||||||
|
|
||||||
|
message := map[string]string{"text": userMessage}
|
||||||
|
messageJson, err := json.Marshal(message)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error marshalling message")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequest("POST", url, bytes.NewBuffer(messageJson))
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error creating request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
req.Header.Add("Content-Type", "application/json; charset=UTF-8")
|
||||||
|
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error sending request")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer func(Body io.ReadCloser) {
|
||||||
|
err := Body.Close()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error closing response body")
|
||||||
|
}
|
||||||
|
}(resp.Body)
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user