README
ΒΆ
π Slack SDK for Go
A lightweight and modular SDK for building Slack bots and apps in Go. With this SDK, you can easily send messages, manage users, and extend functionality to integrate with the Slack API seamlessly.
π Features
- π¨ Send messages to Slack channels
- π€ Fetch user information
- β‘οΈ Extendable for additional Slack APIs
- π§© Lightweight and modular design
- π― Easy integration into Go projects
π Getting Started
β Prerequisites
- Go 1.18 or later
- A Slack Bot Token with the required permissions.
Create a Slack App to generate your token.
π¦ Installation
Add the SDK to your project using:
go get github.com/pramithamj/slack-sdk-go/pkg/slack
β¨ Example Usage
Hereβs a quick example to send a message using the SDK:
package main
import (
"fmt"
"log"
"github.com/pramithamj/slack-sdk-go/pkg/slack"
)
func main() {
// Replace with your actual Slack Bot Token
token := "xoxb-your-slack-bot-token"
sdk := slack.NewSlackSDK(token)
channel := "C123456789" // Slack channel ID
message := "Hello, Slack from Go SDK!"
response, err := sdk.SendMessage(channel, message)
if err != nil {
log.Fatalf("Error sending message: %v", err)
}
fmt.Printf("Message sent successfully: %v\n", response)
}
π API Methods
1οΈβ£ SendMessage
Send a message to a Slack channel.
π₯ Parameters: β’ channel (string): The channel ID where the message will be sent. β’ text (string): The message text.
π€ Example:
response, err := sdk.SendMessage("C123456789", "Hello, Slack!")
if err != nil {
log.Fatalf("Error: %v", err)
}
fmt.Println(response)
2οΈβ£ GetUserInfo
Fetch details about a Slack user.
π₯ Parameters: β’ userID (string): The ID of the user.
π€ Example:
response, err := sdk.GetUserInfo("U123456789")
if err != nil {
log.Fatalf("Error: %v", err)
}
fmt.Println(response)
π Testing
Run all tests using:
go test ./tests/...
π€ Contributing
We welcome contributions! To contribute: 1. Fork the repository 2. Create a new branch: git checkout -b feature-name 3. Commit your changes: git commit -m 'Add feature' 4. Push the branch: git push origin feature-name 5. Open a Pull Request
π License
This project is licensed under the MIT License. See the LICENSE file for more details.
π€ Author
PramithaMJ β’ π» [PramithaMJ]](https://github.com/pramithamj) β’ π§ lpramithamj@gmail.com
Slack SDK for Go π
A powerful and flexible Go SDK for interacting with the Slack API, providing a simple yet comprehensive interface for sending messages and managing Slack communications.
Features β¨
- π Simple and rich message support
- π§΅ Thread reply functionality
- π Automatic retries with configurable attempts
- β±οΈ Context support for timeouts and cancellation
- π― Custom error types and proper error handling
- π Secure configuration via environment variables
- π¦ Block kit and message attachments support
Installation π₯
go get github.com/pramithamj/slack-go-sdk
Quick Start π
package main
import (
"context"
"log"
"os"
"time"
"github.com/pramithamj/slack-go-sdk/pkg/slack"
)
func main() {
// Get token from environment
token := os.Getenv("SLACK_BOT_TOKEN")
if token == "" {
log.Fatal("SLACK_BOT_TOKEN is required")
}
// Initialize SDK
sdk := slack.NewSlackSDK(token)
// Send a message
ctx := context.Background()
response, err := sdk.SendMessage(ctx, "CHANNEL_ID", "Hello from Go SDK!")
if err != nil {
log.Fatal(err)
}
log.Printf("Message sent: %v", response)
}
Advanced Usage π§
Custom Configuration
sdk := slack.NewSlackSDKWithConfig(slack.Config{
Token: token,
BaseURL: "https://slack.com/api/",
Timeout: 10 * time.Second,
RetryAttempts: 2,
RetryWaitTime: time.Second,
})
Rich Messages with Blocks
richMessage := slack.MessagePayload{
Channel: channelID,
Blocks: []slack.Block{
{
Type: "section",
Text: &slack.TextObject{
Type: "mrkdwn",
Text: "*Hello!*\nThis is a rich message.",
},
},
},
}
response, err := sdk.SendRichMessage(ctx, richMessage)
Thread Replies
response, err := sdk.SendThreadReply(ctx, channelID, threadTS, "This is a reply!")
Environment Variables π
SLACK_BOT_TOKEN: Your Slack bot token (required)SLACK_CHANNEL_ID: Default channel ID for messages
Error Handling π
response, err := sdk.SendMessage(ctx, channelID, message)
if err != nil {
if slackErr, ok := err.(*slack.SlackError); ok {
log.Printf("Slack API error: %s", slackErr.Message)
} else {
log.Printf("Other error: %v", err)
}
}
Contributing π€
Contributions are welcome! Feel free to:
- Report bugs
- Suggest new features
- Submit PRs
Contact π«
- π» PramithaMJ
- π§ lpramithamj@gmail.com
License π
This project is licensed under the MIT License - see the LICENSE file for details.
Last Updated: March 1, 2025