OpBot is a Slack bot written in Go that provides various functionalities to help teams monitor and manage their operations more effectively by integrating with Slack.
git clone https://github.com/synapsecns/sanguine.git
cd sanguine/contrib/opbot
go mod tidy
go build -o opbot main.go
OpBot uses a YAML configuration file to manage its settings. The configuration file should be named config.yml
and placed in the same directory as the executable.
config.yml
slack_bot_token: "your-slack-bot-token"
slack_app_token: "your-slack-app-token"
rfq_api_url: "https://rfq-api.example.com"
omnirpc_url: "https://omnirpc.example.com"
Tokens can be obtained here. When creating an app, you can copy and paste the manifest file to configure the app automatically.
slack_bot_token
: The bot token for your Slack bot.slack_app_token
: The app token for your Slack app.rfq_api_url
: The URL for the RFQ API.omnirpc_url
: The URL for the Omni RPC service. ./opbot start --config config.yml
/opbot rfq 0x1234
cmd
: Contains the command line interface for the bot.config
: Provides functionality to read and write configuration files.botmd
: Contains the main bot server implementation.metadata
: Provides metadata services for the bot.internal
: Contains internal utilities and clients.Feel free to reach out if you have any questions or need further assistance!
Certainly! I’ll provide a step-by-step guide on how to add a new command to OpBot based on the information available in the provided code files.
Create a new command function
In the botmd/botmd.go
file, add a new method to the Bot
struct. This method should return a *slacker.CommandDefinition
. For example:
func (b *Bot) newCommand() *slacker.CommandDefinition {
return &slacker.CommandDefinition{
Command: "your-command <argument>",
Description: "Description of your command",
Handler: func(botCtx slacker.BotContext, request slacker.Request, response slacker.ResponseWriter) {
// Command logic goes here
},
}
}
Add the command to the bot
In the NewBot
function within botmd/botmd.go
, add your new command to the addCommands
call:
bot.addCommands(
bot.rfqLookupCommand(),
bot.rfqRefund(),
bot.newCommand(), // Add your new command here
)
Implement command logic
In the Handler
function of your command, implement the logic for your command. You can access bot resources like b.rpcClient
, b.rfqClient
, etc., to interact with different services.
Add any necessary configuration
If your command requires additional configuration, add the necessary fields to the config.Config
struct in the config/config.go
file.
Update the README Add information about your new command to the README.md file, including its usage and any new configuration options.
Test your command Rebuild the bot and test your new command in Slack to ensure it works as expected.