Класс types.Message модуля aiogram
Класс types.Message
является основным классом в библиотеке aiogram для представления сообщений в Telegram. Он содержит различные методы и атрибуты для работы с сообщениями.
Некоторые из наиболее часто используемых атрибутов и методов класса `types.Message`:
message_id
: Уникальный идентификатор сообщения.from_user
: Объектtypes.User
, представляющий отправителя сообщения.date
: Дата и время отправки сообщения.chat
: Объект `types.Chat`, представляющий чат, в котором было отправлено сообщение.forward_from
: Объектtypes.User
, представляющий отправителя оригинального сообщения, если оно было переслано.forward_from_chat
: Объектtypes.Chat
, представляющий чат, из которого было переслано оригинальное сообщение, если оно было переслано из группы или канала.forward_from_message_id
: Идентификатор оригинального сообщения, если оно было переслано.text
: Текст сообщения.entities
: Список объектовtypes.MessageEntity
, представляющих различные сущности в тексте сообщения, такие как упоминания пользователей, хэштеги и т.д.reply_to_message
: Объектtypes.Message
, представляющий сообщение, на которое данное сообщение является ответом.reply_markup
: Объект `types.InlineKeyboardMarkup` или `types.ReplyKeyboardMarkup`, представляющий клавиатуру, привязанную к сообщению.delete()
: Метод для удаления сообщения.edit_text()
: Метод для редактирования текста сообщения.reply()
: Метод для отправки ответного сообщения.
Примеры, приведенные в этой статье работают на версии aiogram 2x
Методы, которые позволяют отправлять сообщения
Для отправки текстового сообщения в библиотеке aiogram можно использовать несколько методов. Некоторые из них:
bot.send_message(chat_id, text)
: Этот метод позволяет отправить текстовое сообщение в указанный чат. Необходимо указать идентификатор чата (chat_id
) и текст сообщения (text
).
Пример использования:
await bot.send_message(chat_id, "Привет, мир!")
message.answer(text)
, который позволяет отправить ответное сообщение на текущее сообщение. Этот метод является альтернативой методуmessage.reply(text)
.
Пример использования:
await message.answer("Спасибо за ваше сообщение!")
Метод message.answer()
автоматически определяет идентификатор чата и идентификатор сообщения, на которое нужно ответить, поэтому вам не нужно указывать их явно.
message.reply(text)
: Этот метод позволяет отправить ответное сообщение на текущее сообщение. Необходимо указать текст ответного сообщения (text
).
Пример использования:
await message.reply("Спасибо за ваше сообщение!")
<strong>message.edit_text(text)</strong>
: Этот метод позволяет отредактировать текст текущего сообщения. Необходимо указать новый текст сообщения (text
).
Пример использования:
await message.edit_text("Новый текст сообщения")
<strong>bot.send_message(chat_id, text, reply_to_message_id)</strong>
: Этот метод позволяет отправить текстовое сообщение в указанный чат в качестве ответа на другое сообщение. Необходимо указать идентификатор чата (chat_id
), текст сообщения (text
) и идентификатор сообщения, на которое данное сообщение будет ответом (reply_to_message_id
).
Пример использования:
await bot.send_message(chat_id, "Ответ на ваше сообщение", reply_to_message_id=message_id)
Различия между send_message, answer и reply
Метод bot.send_message
отправляет сообщение в произвольный чат, который указывается в параметре chat_id
. Метод answer()
, позволяет отправить сообщение в ответ на предыдущее сообщение в текущем чате. При этом, сообщение, на которое дается ответ не пересылается. Метод reply()
, позволяет отправить сообщение в ответ на предыдущее сообщение в текущем чате. Cообщение, на которое дается ответ также отправляется.
Пример готового бота, который умеет отправлять сообщения
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
# Установите токен вашего бота
BOT_TOKEN = 'YOUR_BOT_TOKEN'
bot = Bot(token=BOT_TOKEN)
dp = Dispatcher(bot, storage=MemoryStorage())
@dp.message_handler(commands=['start'])
async def handle_start(message: types.Message):
# Отправляем приветственное сообщение
await message.reply('Привет! Я бот. Как дела?')
@dp.message_handler(commands=['help'])
async def handle_help(message: types.Message):
# Отправляем сообщение с инструкциями по использованию бота
help_message = """
Привет! Я бот.
Вот некоторые доступные команды:
- /start: Начать взаимодействие с ботом
- /help: Получить справку о командах бота
"""
await message.reply(help_message)
@dp.message_handler()
async def handle_message(message: types.Message):
# Отправляем эхо-ответ на полученное сообщение
await message.reply(f'Вы отправили сообщение: {message.text}')
if __name__ == '__main__':
from aiogram import executor
executor.start_polling(dp, skip_updates=True)
В этом примере бот будет отвечать на команды /start
и /help
, а также на любые другие текстовые сообщения, отправленные пользователем. При получении команды /start
он отправит приветственное сообщение, а при получении команды /help
отправит справку о командах бота. Для всех остальных сообщений бот отправит эхо-ответ с содержимым полученного сообщения.
Просто замените 'YOUR_BOT_TOKEN'
на фактический токен вашего бота, запустите скрипт, и ваш бот будет готов к работе. Вы можете добавить дополнительные команды и функциональность, чтобы адаптировать его под свои потребности.
Отправка других типов контента с помощью бота
В библиотеке aiogram вы можете отправлять различные типы контента помимо простого текста. Вот некоторые из наиболее распространенных типов контента, которые вы можете отправлять с помощью aiogram:
1. Фотографии: Метод send_photo
используется для отправки фотографий. Вы можете указать путь к файлу фотографии на вашем сервере или использовать URL-адрес изображения в Интернете. Пример использования:
await bot.send_photo(chat_id, photo=open('photo.jpg', 'rb'), caption='Красивая фотография')
2. Аудио: Метод send_audio
используется для отправки аудиофайлов. Вы можете указать путь к файлу аудио или использовать URL-адрес аудиофайла в Интернете. Пример использования:
await bot.send_audio(chat_id, audio=open('audio.mp3', 'rb'), caption='Музыкальный трек')
3. Документы: Метод `send_document` используется для отправки документов. Вы можете указать путь к файлу документа на вашем сервере или использовать URL-адрес документа в Интернете. Пример использования:
await bot.send_document(chat_id, document=open('document.pdf', 'rb'), caption='PDF-документ')
4. Видео: Метод send_video
используется для отправки видеофайлов. Вы можете указать путь к файлу видео или использовать URL-адрес видеофайла в Интернете. Пример использования:
await bot.send_video(chat_id, video=open('video.mp4', 'rb'), caption='Видео-ролик')
5. Голосовые сообщения: Метод send_voice
используется для отправки голосовых сообщений. Вы можете указать путь к файлу голосового сообщения на вашем сервере или использовать URL-адрес голосового сообщения в Интернете. Пример использования:
await bot.send_voice(chat_id, voice=open('voice.ogg', 'rb'), caption='Голосовое сообщение')
Пример реализации бота с возможностью отправки разного типа контента
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
# Установите токен вашего бота
BOT_TOKEN = 'YOUR_BOT_TOKEN'
bot = Bot(token=BOT_TOKEN)
dp = Dispatcher(bot, storage=MemoryStorage())
@dp.message_handler(commands=['start'])
async def handle_start(message: types.Message):
# Отправляем приветственное сообщение
await message.reply('Привет! Я бот. Как дела?')
@dp.message_handler(commands=['text'])
async def handle_text(message: types.Message):
# Отправляем текстовое сообщение
await message.reply('Пример текстового сообщения')
@dp.message_handler(commands=['video'])
async def handle_video(message: types.Message):
# Отправляем видеофайл
await bot.send_video(message.chat.id, video=open('video.mp4', 'rb'))
@dp.message_handler(commands=['audio'])
async def handle_audio(message: types.Message):
# Отправляем аудиофайл
await bot.send_audio(message.chat.id, audio=open('audio.mp3', 'rb'))
@dp.message_handler(commands=['document'])
async def handle_document(message: types.Message):
# Отправляем документ
await bot.send_document(message.chat.id, document=open('document.pdf', 'rb'))
@dp.message_handler(commands=['photo'])
async def handle_photo(message: types.Message):
# Отправляем фотографию
await bot.send_photo(message.chat.id, photo=open('photo.jpg', 'rb'))
@dp.message_handler(commands=['voice'])
async def handle_voice(message: types.Message):
# Отправляем голосовое сообщение
await bot.send_voice(message.chat.id, voice=open('voice.ogg', 'rb'))
if __name__ == '__main__':
from aiogram import executor
executor.start_polling(dp, skip_updates=True)
В этом примере бот реагирует на различные команды (/start
, /text
, /video
, /audio
, /document
, /photo
, /voice
). Когда пользователь отправляет одну из этих команд, бот отправляет соответствующий контент в ответ.
Просто замените 'YOUR_BOT_TOKEN'
на фактический токен вашего бота, а также укажите пути к файлам видео, аудио, документа, фотографии и голосового сообщения. После этого запустите скрипт, и ваш бот будет готов к работе. Вы можете добавить дополнительные команды и функциональность, чтобы адаптировать его под свои потребности.
Примеры ботов, работающих с сообщениями
Бот — фильтр ненормативной лексики
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
# Установите токен вашего бота
BOT_TOKEN = 'YOUR_BOT_TOKEN'
bot = Bot(token=BOT_TOKEN)
dp = Dispatcher(bot, storage=MemoryStorage())
# Список запрещенных слов
forbidden_words = ['ругаться', 'оскорблять', 'ненормативная_лексика']
@dp.message_handler()
async def handle_message(message: types.Message):
text = message.text.lower()
# Проверяем наличие запрещенных слов в сообщении
if any(word in text for word in forbidden_words):
# Отправляем предупреждение
await message.reply('В чате нельзя ругаться!')
if __name__ == '__main__':
from aiogram import executor
executor.start_polling(dp, skip_updates=True)
В этом примере бот реагирует на все сообщения в чате и проверяет наличие запрещенных слов из списка forbidden_words
в тексте сообщения. Если хотя бы одно из запрещенных слов обнаружено, бот отправляет предупреждение о недопустимости ругательства.
Просто замените 'YOUR_BOT_TOKEN'
на фактический токен вашего бота и расширьте список forbidden_words
в соответствии с вашими требованиями. Запустите скрипт, и ваш бот будет готов к мониторингу сообщений и отправке предупреждений о ненормативной лексике.
Индивидуальное и групповое обучение «Python Junior»
Если вы хотите научиться программировать на Python, могу помочь. Запишитесь на мой курс «Python Junior» и начните свой путь в мир ИТ уже сегодня!
Контакты
Для получения дополнительной информации и записи на курсы свяжитесь со мной:
Телеграм: https://t.me/Vvkomlev
Email: victor.komlev@mail.ru
Объясняю сложное простыми словами. Даже если вы никогда не работали с ИТ и далеки от программирования, теперь у вас точно все получится! Проверено десятками примеров моих учеников.
Гибкий график обучения. Я предлагаю занятия в мини-группах и индивидуально, что позволяет каждому заниматься в удобном темпе. Вы можете совмещать обучение с работой или учебой.
Практическая направленность. 80%: практики, 20% теории. У меня множество авторских заданий, которые фокусируются на практике. Вы не просто изучаете теорию, а сразу применяете знания в реальных проектах и задачах.
Разнообразие учебных материалов: Теория представлена в виде текстовых уроков с примерами и видео, что делает обучение максимально эффективным и удобным.
Понимаю, что обучение информационным технологиям может быть сложным, особенно для новичков. Моя цель – сделать этот процесс максимально простым и увлекательным. У меня персонализированный подход к каждому ученику. Максимальный фокус внимания на ваши потребности и уровень подготовки.