Message
Кожен обробник отримує *goroku.Message.
Поля
| Поле | Тип | Значення |
|---|---|---|
ID | int64 | ID повідомлення |
ChatID | int64 | Чат, у якому надіслано |
SenderID | int64 | ID відправника. 0, якщо відправник не користувач — анонімні адміни та дописи від імені каналу |
SenderChannelID | int64 | Канал, від імені якого надіслано, 0 для звичайного користувача |
SenderIsChannel | bool | Відправник — канал, а не користувач |
Text | string | Текст із застосованим форматуванням |
RawText | string | Текст точно як надруковано |
Entities | []tg.MessageEntityClass | Сутності форматування |
Out | bool | Надіслано цим акаунтом |
Media | tg.MessageMediaClass | Вкладення, nil якщо немає |
IsPrivate | bool | Приватний чат |
IsGroup | bool | Група |
IsChannel | bool | Канал |
ReplyToMsgID | int64 | Повідомлення, на яке відповіли, 0 якщо немає |
IsForwarded | bool | Переслано звідкись |
FwdFrom | tg.MessageFwdHeader | Заголовок пересилання |
ViaBotID | int64 | Використаний інлайн-бот, 0 якщо немає |
Answered | bool | Обробник уже відповів |
Client | *CustomTelegramClient | Клієнт, що отримав повідомлення |
Аргументи
Args() string
Усе після слова команди, з обрізаними краями. Внутрішні пробіли зберігаються.
// .say привіт усім
msg.Args() // "привіт усім"ArgsList() []string
Args, розбитий за пробілами. nil, якщо порожньо.
Arg(i int) string
i-й аргумент або "", якщо індекс за межами. Ніколи не панікує.
ArgsOrReply() string
Args(), а за порожнього результату — текст повідомлення, на яке відповіли. "", якщо немає ні того, ні іншого.
code := msg.ArgsOrReply()
if code == "" {
return msg.Answer("❌ Надішліть текст або відповідайте на повідомлення")
}Усі чотири безпечні на nil-отримувачі.
Відповіді
Answer(text string, opts ...MsgOption) error
Редагує ваше повідомлення або відповідає, якщо команду викликав хтось інший. Вибір за замовчуванням.
Reply(text string, opts ...MsgOption) error
Завжди надсилає нове повідомлення як відповідь.
Edit(text string, opts ...MsgOption) error
Завжди редагує це повідомлення.
Delete() error
Видаляє це повідомлення.
Опції
| Опція | Дія |
|---|---|
WithNoWebpage(bool) | Прибрати прев'ю посилання |
WithReplyTo(int64) | Відповісти на повідомлення або надіслати в тему форуму |
WithInvertMedia(bool) | Прев'ю над текстом |
WithWebPageMedia(url string, optional, forceLarge bool) | Задати прев'ю |
msg.Answer("без прев'ю", goroku.WithNoWebpage(true))Інші методи
GetReplyMessage() (*Message, error)
Отримує повідомлення, на яке відповіли. Повертає nil, nil, якщо його немає.
Context() context.Context
Скасовується під час завершення бота. Передавайте в довгі операції.
GetChatID() / GetID() / GetReplyToMsgID() int64
Аксесори, безпечні на nil.
IsOut() bool
Чи надіслано повідомлення цим акаунтом.