mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Add ThreadID parameter for Telegram webhooks (#25996)
Telegram has recently implemented threads (channels) for group chats. Co-authored-by: neveraskedtoexist <matikot415@gmail.com>
This commit is contained in:
		@@ -2314,6 +2314,7 @@ settings.tags.protection.none = There are no protected tags.
 | 
			
		||||
settings.tags.protection.pattern.description = You can use a single name or a glob pattern or regular expression to match multiple tags. Read more in the <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/protected-tags/">protected tags guide</a>.
 | 
			
		||||
settings.bot_token = Bot Token
 | 
			
		||||
settings.chat_id = Chat ID
 | 
			
		||||
settings.thread_id = Thread ID
 | 
			
		||||
settings.matrix.homeserver_url = Homeserver URL
 | 
			
		||||
settings.matrix.room_id = Room ID
 | 
			
		||||
settings.matrix.message_type = Message Type
 | 
			
		||||
 
 | 
			
		||||
@@ -425,12 +425,13 @@ func telegramHookParams(ctx *context.Context) webhookParams {
 | 
			
		||||
 | 
			
		||||
	return webhookParams{
 | 
			
		||||
		Type:        webhook_module.TELEGRAM,
 | 
			
		||||
		URL:         fmt.Sprintf("https://api.telegram.org/bot%s/sendMessage?chat_id=%s", url.PathEscape(form.BotToken), url.QueryEscape(form.ChatID)),
 | 
			
		||||
		URL:         fmt.Sprintf("https://api.telegram.org/bot%s/sendMessage?chat_id=%s&message_thread_id=%s", url.PathEscape(form.BotToken), url.QueryEscape(form.ChatID), url.QueryEscape(form.ThreadID)),
 | 
			
		||||
		ContentType: webhook.ContentTypeJSON,
 | 
			
		||||
		WebhookForm: form.WebhookForm,
 | 
			
		||||
		Meta: &webhook_service.TelegramMeta{
 | 
			
		||||
			BotToken: form.BotToken,
 | 
			
		||||
			ChatID:   form.ChatID,
 | 
			
		||||
			ThreadID: form.ThreadID,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -353,6 +353,7 @@ func (f *NewDingtalkHookForm) Validate(req *http.Request, errs binding.Errors) b
 | 
			
		||||
type NewTelegramHookForm struct {
 | 
			
		||||
	BotToken string `binding:"Required"`
 | 
			
		||||
	ChatID   string `binding:"Required"`
 | 
			
		||||
	ThreadID string
 | 
			
		||||
	WebhookForm
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -28,6 +28,7 @@ type (
 | 
			
		||||
	TelegramMeta struct {
 | 
			
		||||
		BotToken string `json:"bot_token"`
 | 
			
		||||
		ChatID   string `json:"chat_id"`
 | 
			
		||||
		ThreadID string `json:"thread_id"`
 | 
			
		||||
	}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,10 @@
 | 
			
		||||
			<label for="chat_id">{{.locale.Tr "repo.settings.chat_id"}}</label>
 | 
			
		||||
			<input id="chat_id" name="chat_id" type="text" value="{{.TelegramHook.ChatID}}" required>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="field {{if .Err_ThreadID}}error{{end}}">
 | 
			
		||||
			<label for="thread_id">{{.locale.Tr "repo.settings.thread_id"}}</label>
 | 
			
		||||
			<input id="thread_id" name="thread_id" type="text" value="{{.TelegramHook.ThreadID}}">
 | 
			
		||||
		</div>
 | 
			
		||||
		{{template "repo/settings/webhook/settings" .}}
 | 
			
		||||
	</form>
 | 
			
		||||
{{end}}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user