@matveyplt

Почему Функция split не работает?

Я только начал изучать кодинг, поэтому извиняюсь за глупый вопрос, но не нашел ответа в инете
import config
import logging

from aiogram import Bot, Dispatcher, executor, types

logging.basicConfig(level=logging.INFO)

bot = Bot(token=config.TOKEN)
dp = Dispatcher(bot)

@dp.message_handler()

async def addrifm1(message: types.Message):
	mes = types.message
	list = mes.split(",")
	await message.reply(" async def rifm1(message: types.Message):")
	await message.reply("if", list[1], " in message.text:")
	await message.reply("await message.reply(", list[2], ")")


if __name__ == "__main__":
	executor.start_polling(dp, skip_updates=True)

Бот запускается без ошибок, но когда пишу ему сообщения он в консоли выдает ошибку
AttributeError: module 'aiogram.types.message' has no attribute 'split'
  • Вопрос задан
  • 318 просмотров
Пригласить эксперта
Ответы на вопрос 2
@ars_kushaet_mars
Попробуй mes из строки list = mes.split(",") обернуть в метод dir следующим образом:
dir(mes) и вывести на печать.
Выведутся все доступные методы, среди них не будет метода split, этим и вызвана ошибка.
Ответ написан
Комментировать
@lob4Noff
Вы получаете ошибку, потому что в описанном случае aiogram использует собственный тип данных. Метод split() работает в том случае, если объект является строкой.
Вы можете получить словарь, содержащий информацию о пользователе и его сообщении, и затем передать в список значение сообщения по ключу (разбитие сообщения на отдельные слова будет при вхождении символа запятой):

import config
import logging

from aiogram import Bot, Dispatcher, executor, types

logging.basicConfig(level=logging.INFO)

bot = Bot(token='')
dp = Dispatcher(bot)

@dp.message_handler()

async def addrifm1(message: types.Message):
  mes = message
  list = mes['text'].split(",")
  await message.reply(" async def rifm1(message: types.Message):")
  await message.reply("if", list[1], " in message.text:")
  await message.reply("await message.reply(", list[2], ")")


if __name__ == "__main__":
  executor.start_polling(dp, skip_updates=True)


Если Вы только начинаете изучать программирование, советую Вам модуль telebot: его синтаксис намного легче, а в Сети Вы сможете получить больше документации.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы