• Как защитить базу от пользователей?

    @ComodoHacker
    Насколько я понял, у вас двухзвенная архитектура, клиентское приложение коннектится напрямую в БД. А пароль на коннект к БД зашит в исполняемом файле приложения.

    Могу предложить два пути.
    1. Разграничивать доступ на уровне БД. Для каждого пользователя создать соответствующего пользователя в БД, а его логин и пароль использовать для соединения с БД. И очень внимательно раздавать права в БД.
    2. Переходить на трехзвенную архитектуру. Добавить сервер приложения, который будет аутентифицировать пользователей и запрашивать данные из БД от их имени. Соединяться с БД он будет под своим логином с полными правами. Пароль будет в конфиге сервера.
    Ответ написан
    Комментировать
  • Как сделать перенос инлайн кнопок?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    ничего не работает

    Потому что кнопки в итоге добавляете через метод row, который игнорирует параметр row_width
    row() добавляет именно строку, сколько передали параметров - столько и будет кнопок в строке (ну, без превышения лимитов телеги конечно)
    add() добавляет кнопки, разбивая их на несколько строк по длине row_width

    Так что заменяйте на
    def  test():
        return types.InlineKeyboardMarkup(row_width = 2).add(
            types.InlineKeyboardButton('test', callback_data=ge_cb.new(action='test1')),
            types.InlineKeyboardButton('test' , callback_data=ge_cb.new(action='test2')),
            types.InlineKeyboardButton('test', callback_data=ge_cb.new(action='test3')),
            types.InlineKeyboardButton('test', callback_data=ge_cb.new(action='test4')))
    Ответ написан
    Комментировать
  • Как защитить базу от пользователей?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Написать простенький API, запросы на который будет слать клиентское приложение, ну и соответственно обрабатывать все запросы на защищенном сервере, с него же и делать sql запросы, но уж никак не хранить данные для аутентификации БД прям в коде...
    Ответ написан
    Комментировать
  • Как вывести данные из бд в порядке возрастания?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Легко. Это же самые основы SQL.
    Ответ написан
    Комментировать
  • Как получить id канала в винтиках?

    Две проблемы:
    Первая, и основная - переменная client не определена, о чём и говорит ошибка. В данном контексте вам нужно брать client из класса, в котором находится команда: self.client
    Вторая - discord.Bot.get_guild принимает в качестве аргумента - ID сервера, типа int
    discord.py по умолчанию, если не указан тип переменной в команде - передаёт её напрямую как строку (str). Используйте конвертеры для автоматической конвертации аргументов. Помните также, что функция get_guild (как и большая часть остальных get_ функций) - не асинхронная, и не работает с await
    @commands.command()
    async def test(self, ctx, arg: int):
        channel = self.client.get_guild(arg)
        await channel.send("Я написал в канал, который ты указал!")
    Ответ написан
    Комментировать