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
Отправлено ли сообщение этим аккаунтом.