diff --git a/contrib/opbot/botmd/commands.go b/contrib/opbot/botmd/commands.go index 4ee3355982..abb0d19e6b 100644 --- a/contrib/opbot/botmd/commands.go +++ b/contrib/opbot/botmd/commands.go @@ -278,63 +278,65 @@ func (b *Bot) rfqRefund() *slacker.CommandDefinition { return } + var rawRequest *relapi.GetQuoteRequestResponse + var err error for _, relayer := range b.cfg.RelayerURLS { relClient := relapi.NewRelayerClient(b.handler, relayer) - - rawRequest, err := getQuoteRequest(ctx.Context(), relClient, tx) - if err != nil { - _, err := ctx.Response().Reply("error fetching quote request") - if err != nil { - log.Println(err) - } - return + rawRequest, err = getQuoteRequest(ctx.Context(), relClient, tx) + if err == nil { + break } - - fastBridgeContract, err := b.makeFastBridge(ctx.Context(), rawRequest) + } + if err != nil { + _, err := ctx.Response().Reply("error fetching quote request") if err != nil { - _, err := ctx.Response().Reply(err.Error()) - if err != nil { - log.Println(err) - } - return + log.Println(err) } + return + } - canRefund, err := b.screener.ScreenAddress(ctx.Context(), rawRequest.Sender) + fastBridgeContract, err := b.makeFastBridge(ctx.Context(), rawRequest) + if err != nil { + _, err := ctx.Response().Reply(err.Error()) if err != nil { - _, err := ctx.Response().Reply("error screening address") - if err != nil { - log.Println(err) - } - return + log.Println(err) } + return + } - if !canRefund { - _, err := ctx.Response().Reply("address cannot be refunded") - if err != nil { - log.Println(err) - } - return + canRefund, err := b.screener.ScreenAddress(ctx.Context(), rawRequest.Sender) + if err != nil { + _, err := ctx.Response().Reply("error screening address") + if err != nil { + log.Println(err) } - - nonce, err := b.submitter.SubmitTransaction(ctx.Context(), big.NewInt(int64(rawRequest.OriginChainID)), func(transactor *bind.TransactOpts) (tx *types.Transaction, err error) { - tx, err = fastBridgeContract.Refund(transactor, common.Hex2Bytes(rawRequest.QuoteRequestRaw)) - if err != nil { - return nil, fmt.Errorf("error submitting refund: %w", err) - } - return tx, nil - }) + return + } + if !canRefund { + _, err := ctx.Response().Reply("address cannot be refunded") if err != nil { - log.Printf("error submitting refund: %v\n", err) - continue + log.Println(err) } + return + } - // TODO: follow the lead of https://github.com/synapsecns/sanguine/pull/2845 - _, err = ctx.Response().Reply(fmt.Sprintf("refund submitted with nonce %d", nonce)) + nonce, err := b.submitter.SubmitTransaction(ctx.Context(), big.NewInt(int64(rawRequest.OriginChainID)), func(transactor *bind.TransactOpts) (tx *types.Transaction, err error) { + tx, err = fastBridgeContract.Refund(transactor, common.Hex2Bytes(rawRequest.QuoteRequestRaw)) if err != nil { - log.Println(err) + return nil, fmt.Errorf("error submitting refund: %w", err) } + return tx, nil + }) + if err != nil { + log.Printf("error submitting refund: %v\n", err) return } + + // TODO: follow the lead of https://github.com/synapsecns/sanguine/pull/2845 + _, err = ctx.Response().Reply(fmt.Sprintf("refund submitted with nonce %d", nonce)) + if err != nil { + log.Println(err) + } }, } }