Ответы пользователя по тегу Боты
  • Внести в БД ID-сервера и дефолтний префикс - discord.py rewrite, PostgreSQL?

    sotanodroid
    @sotanodroid
    Python/Golang developer
    Для работы с бд недостаточно просто импортировать asyncpg.

    Необходимо в коде создать подключение к базе и использовтаь его для работы с базой например вот так:

    import asyncpg
    
    async def main():
        conn = await asyncpg.connect('postgresql://postgres@localhost/test')
    
        await conn.execute('''
            INSERT INTO users(name, dob) VALUES($1, $2)
        ''', 'Bob', datetime.date(1984, 3, 1))
    
        await conn.close()


    Больше примеров в документации к библиотеке.

    У вас же ошибка из-за вызова несуществующего метода у объекта.
    Ответ написан
  • Как отправлять сообщения по расписанию с aiogram?

    sotanodroid
    @sotanodroid
    Python/Golang developer
    Ты можешь использовать функцию EventLoop call_at: https://docs.python.org/3/library/asyncio-eventloo...

    К примеру тебе надо отправлять сообщение с определенным интервалом.

    Получаем из текущего событийного цикла время, прибавляем к нему интервал -- это будет время вызова функции.
    Далее создаем задачу на вызов в это время.
    Функция call_at принимает параметр времени, когда вызвать функцию, и саму функцию вторым аргументом. Третьим и дале еаргументами можно передать аргументы для вызываемой функции.

    loop = asyncio.get_event_loop()
    delay = 100.0
    
    async def my_func():
        # твоя логика с отправкой сообщений тут
        when_to_call = loop.time() + delay  # delay -- промежуток времени в секундах.
        loop.call_at(when_to_call, my_callback)
    
    def my_callback():
        asyncio.ensure_future(my_func())


    Таким образом ты зациклишь вызов своей функции по интервалу.
    Не забудь так же что твой событийный цикл в этом случае должен работать бесконечно: https://docs.python.org/3/library/asyncio-eventloo...
    Ответ написан
    1 комментарий
  • Как получить данные из БД и вывести в телеграм бота?

    sotanodroid
    @sotanodroid
    Python/Golang developer
    Необходимо сделать запрос к самой базе.
    В зависимости от СУБД базы в этом тебе помогут различные библиотеки.
    например для Postgres подойдет psycopg2 .

    В документации приведены примеры использования модуля.

    import psycopg2
    
    # Создание подключения к базе
    conn = psycopg2.connect("dbname=test user=postgres")  #  Можно использовать формат DSN
    
    # Создание курсора для выполнения операций с бд
    cur = conn.cursor()
    
    # Выполняешь запрос к бд
    cur.execute("SELECT * FROM my_bd;")
    cur.fetchone()
    # выведет например (1, 100, "abc'def"), можно присвоить переменной 
    
    # После использования необходимо закрыть подключение и курсор.
    cur.close()
    сonn.close()
    Ответ написан
    1 комментарий
  • Как брать информацию с другого сайта для Telegram-бота?

    sotanodroid
    @sotanodroid
    Python/Golang developer
    Все зависит от сайта.

    Если этот сайт предоставляет API -- то тогда можно будет делать к нему запросы. Как правило если есть открытый API -- у него будет и документация, как его использовать. В нем можно будет получать информацию.

    Запросы делать через библиотеку requests
    Ответ написан
    Комментировать