@haeshka

Не могу решить ошибку TypeError: Bot.send_message() missing 1 required positional argument: 'self'. Что делать?

Кароче дело такое, пишу я телеграмм бота на aiogram и мне нужно было сделать чтобы мне отправилось сообщение мной выбранное время (с помощью библиотеки apscheduler), и кароче на самый конец когда сообщение должно мне приходить, выходит вот такая ошибка
TypeError: Bot.send_message() missing 1 required positional argument: 'self'
.

Код отправки сообщение:

async def stop_konkyrs_data(bot: Bot):
    await bot.send_message(chat_id=5638333094, text='Пришло время')


Я пытался решить сам но не получилось а пытался я сделать

1. Через message (message.bot.send_message())
2. сделать через botа не Bot(они отличаются в том что в основном в Botложиться tokenа уже через сам bot уже делается send_message и т.д) но не помогло.

1 и 2 не помогло потому что я не просто отправляю сообщение через хандлер, а делаю это через библиотеку apscheduler(типо делаю его в определённое время).

Жду ваши предложение и примеры решение. Буду благодарен каждому
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
@haeshka Автор вопроса
правильно будет:

from name import bot as bt # импортируем bot = Bot(...) и делаем ему название bt с помощью as bt

async def stop_konkyrs_data(bot: Bot):
    await bt.send_message(chat_id=5638333094, text='Пришло время')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@borisalekseev
extra beginner junior python backend
haeshka, чел, ну ты мало того, что питон не выучил и полез в боты, так ещё и на асинхронном фреймворке сразу же. Хотя бы на синхронном пиши. А чтобы вопросы такие не вылезали каждые 0 секунд, ну пройди ты любой гайд по основам питона, это часа 2-3. Тебе Vindicar абсолютно верно подсказывает.
Следуя из ответа ниже: Предполагаю, что sheduler кладёт в кэш объекты python, но не все, а легкие: строка, инт, словарь и так далее. Тяжелый объект бота он класть туда не хочет. Можно сделать так (псевдокод):
from my_initialize import bot  # именно созданный объект бота, а не класс

async def func_that_works_sheduled_task(chat_id, text):
    await bot.send_message(chat_id, text)

Отпиши по результату, так как сам не воспроизводил.
Ответ написан
Ваш ответ на вопрос

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

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