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-cli account (phone number registered with signal-cli)
|
||||||
signal_account = "+1234567890"
|
signal_account = "+1234567890"
|
||||||
|
|
||||||
# Signal recipient UUID or phone number to send notifications to
|
# Signal recipient UUID for DM notifications
|
||||||
signal_recipient = ""
|
signal_recipient = ""
|
||||||
|
|
||||||
|
# OR: Signal group ID for group notifications (overrides signal_recipient)
|
||||||
|
# signal_group_id = ""
|
||||||
|
|||||||
@@ -12,8 +12,10 @@ type Config struct {
|
|||||||
SignalURL string
|
SignalURL string
|
||||||
// SignalAccount is the signal-cli account (phone number or UUID).
|
// SignalAccount is the signal-cli account (phone number or UUID).
|
||||||
SignalAccount string
|
SignalAccount string
|
||||||
// SignalRecipient is the default Signal recipient for notifications.
|
// SignalRecipient is the default Signal recipient UUID for DM notifications.
|
||||||
SignalRecipient string
|
SignalRecipient string
|
||||||
|
// SignalGroupID is the Signal group ID for group notifications (overrides SignalRecipient).
|
||||||
|
SignalGroupID string
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadConfig() Config {
|
func loadConfig() Config {
|
||||||
@@ -31,5 +33,6 @@ func loadConfig() Config {
|
|||||||
SignalURL: jety.GetString("signal_url"),
|
SignalURL: jety.GetString("signal_url"),
|
||||||
SignalAccount: jety.GetString("signal_account"),
|
SignalAccount: jety.GetString("signal_account"),
|
||||||
SignalRecipient: jety.GetString("signal_recipient"),
|
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 == "" {
|
if cfg.SignalAccount == "" {
|
||||||
log.Fatal("signal_account is required (set GH2SIG_SIGNAL_ACCOUNT or config.toml)")
|
log.Fatal("signal_account is required (set GH2SIG_SIGNAL_ACCOUNT or config.toml)")
|
||||||
}
|
}
|
||||||
if cfg.SignalRecipient == "" {
|
if cfg.SignalRecipient == "" && cfg.SignalGroupID == "" {
|
||||||
log.Fatal("signal_recipient is required (set GH2SIG_SIGNAL_RECIPIENT or config.toml)")
|
log.Fatal("signal_recipient or signal_group_id is required")
|
||||||
}
|
}
|
||||||
|
|
||||||
signal := signalcli.NewClient(cfg.SignalURL, cfg.SignalAccount)
|
signal := signalcli.NewClient(cfg.SignalURL, cfg.SignalAccount)
|
||||||
@@ -29,6 +29,7 @@ func main() {
|
|||||||
notifier := ¬ifier{
|
notifier := ¬ifier{
|
||||||
signal: signal,
|
signal: signal,
|
||||||
recipient: cfg.SignalRecipient,
|
recipient: cfg.SignalRecipient,
|
||||||
|
groupID: cfg.SignalGroupID,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register event handlers.
|
// Register event handlers.
|
||||||
@@ -73,16 +74,20 @@ func main() {
|
|||||||
type notifier struct {
|
type notifier struct {
|
||||||
signal *signalcli.Client
|
signal *signalcli.Client
|
||||||
recipient string
|
recipient string
|
||||||
|
groupID string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *notifier) send(ctx context.Context, msg string) {
|
func (n *notifier) send(ctx context.Context, msg string) {
|
||||||
if msg == "" {
|
if msg == "" {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err := n.signal.Send(ctx, signalcli.SendParams{
|
params := signalcli.SendParams{Message: msg}
|
||||||
Recipient: n.recipient,
|
if n.groupID != "" {
|
||||||
Message: msg,
|
params.GroupID = n.groupID
|
||||||
})
|
} else {
|
||||||
|
params.Recipient = n.recipient
|
||||||
|
}
|
||||||
|
_, err := n.signal.Send(ctx, params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("signal send error: %v", err)
|
log.Printf("signal send error: %v", err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user