mirror of
https://github.com/taigrr/github-to-signal.git
synced 2026-04-02 03:09:09 -07:00
feat: add group chat support
Set signal_group_id in config to send to a group instead of a DM. Group ID takes priority over signal_recipient when both are set.
This commit is contained in:
@@ -10,5 +10,8 @@ signal_url = "http://127.0.0.1:8080"
|
||||
# signal-cli account (phone number registered with signal-cli)
|
||||
signal_account = "+1234567890"
|
||||
|
||||
# Signal recipient UUID or phone number to send notifications to
|
||||
# Signal recipient UUID for DM notifications
|
||||
signal_recipient = ""
|
||||
|
||||
# OR: Signal group ID for group notifications (overrides signal_recipient)
|
||||
# signal_group_id = ""
|
||||
|
||||
@@ -12,8 +12,10 @@ type Config struct {
|
||||
SignalURL string
|
||||
// SignalAccount is the signal-cli account (phone number or UUID).
|
||||
SignalAccount string
|
||||
// SignalRecipient is the default Signal recipient for notifications.
|
||||
// SignalRecipient is the default Signal recipient UUID for DM notifications.
|
||||
SignalRecipient string
|
||||
// SignalGroupID is the Signal group ID for group notifications (overrides SignalRecipient).
|
||||
SignalGroupID string
|
||||
}
|
||||
|
||||
func loadConfig() Config {
|
||||
@@ -31,5 +33,6 @@ func loadConfig() Config {
|
||||
SignalURL: jety.GetString("signal_url"),
|
||||
SignalAccount: jety.GetString("signal_account"),
|
||||
SignalRecipient: jety.GetString("signal_recipient"),
|
||||
SignalGroupID: jety.GetString("signal_group_id"),
|
||||
}
|
||||
}
|
||||
|
||||
17
main.go
17
main.go
@@ -19,8 +19,8 @@ func main() {
|
||||
if cfg.SignalAccount == "" {
|
||||
log.Fatal("signal_account is required (set GH2SIG_SIGNAL_ACCOUNT or config.toml)")
|
||||
}
|
||||
if cfg.SignalRecipient == "" {
|
||||
log.Fatal("signal_recipient is required (set GH2SIG_SIGNAL_RECIPIENT or config.toml)")
|
||||
if cfg.SignalRecipient == "" && cfg.SignalGroupID == "" {
|
||||
log.Fatal("signal_recipient or signal_group_id is required")
|
||||
}
|
||||
|
||||
signal := signalcli.NewClient(cfg.SignalURL, cfg.SignalAccount)
|
||||
@@ -29,6 +29,7 @@ func main() {
|
||||
notifier := ¬ifier{
|
||||
signal: signal,
|
||||
recipient: cfg.SignalRecipient,
|
||||
groupID: cfg.SignalGroupID,
|
||||
}
|
||||
|
||||
// Register event handlers.
|
||||
@@ -73,16 +74,20 @@ func main() {
|
||||
type notifier struct {
|
||||
signal *signalcli.Client
|
||||
recipient string
|
||||
groupID string
|
||||
}
|
||||
|
||||
func (n *notifier) send(ctx context.Context, msg string) {
|
||||
if msg == "" {
|
||||
return
|
||||
}
|
||||
_, err := n.signal.Send(ctx, signalcli.SendParams{
|
||||
Recipient: n.recipient,
|
||||
Message: msg,
|
||||
})
|
||||
params := signalcli.SendParams{Message: msg}
|
||||
if n.groupID != "" {
|
||||
params.GroupID = n.groupID
|
||||
} else {
|
||||
params.Recipient = n.recipient
|
||||
}
|
||||
_, err := n.signal.Send(ctx, params)
|
||||
if err != nil {
|
||||
log.Printf("signal send error: %v", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user