Laplacedms, у тебя диапазон чисел от a до b. Сделай по нему цикл.
images = []
heights = []
widths = []
for i in range(int(a), int(b)+2)
image = Image.open(f'{i}.jpg')
w, h = image.size
images.append(image)
widths.append(w)
heights.append(h)
Дальше суммируешь heights чтобы найти итоговую высоту изображения, находишь максимальное значение из widths и так определяешь размер результирующего изображения.
Аналогично циклом делаешь paste(), только тебе нужно будет в отдельной переменной (отступ) отслеживать суммарную высоту уже вставленных изображений. Вначале отступ 0, вставил картинку с отступом - прибавил её высоту к отступу. Следующая картинка уже вставится с увеличенным отступом.
В чём именно затруднение?
Если затрудняетесь написать калькулятор на питоне, то за ботов браться рановато.
Если не уверены, как это состыковать с ботом, подскажу:
def calc(x: str, y: str, op: str) -> str:
...
Опишите калькулятор как функцию такого вида, пусть он принимает три строки (операнды и операцию), а возвращает ответ, который нужно вывести. Как вывести, откуда берутся строки - не его дело.
Основной бот, соответственно, будет заниматься общением с пользователем, а для вычислений будет дёргать эту функцию.
Artemka324234, плохо читал, значит. Повторю ещё раз.
1. Ты обращаешься к inter.message.author, т.е. сначала пытаешься получить inter.message, потом у него взять поле author.
2. inter - экземпляр класса ApplicationCommandInteraction. У него НЕТ поля message.
3. По ссылке дока на этот класс, там можно увидеть, что у этого класса есть поле author, про которое написано "хранит пользователя или участника сервера, отправившего команду".
4. Вывод: нужно обращаться сразу к inter.author
ali5, проверка типов выполняется отдельной операцией, без выполнения кода. Это позволяет выполнять отлов ошибок заранее, но не тратить на это время при выполнении.
При выполнении кода питон игнорирует type hints, разве что сама программа использует интроспекцию для них.
await ctx.send(embed = discord.Embed(description = f"""Баланс **{ctx.author}** состовляет **{cursor.execute("SELECT cash FROM users WHERE id ={}".format(ctx.author.id)).fetchone()[0]}**"""
Вот за такое надо бить по рукам стальной линейкой. Мало того что нечитаемо, так ещё и не проверишь, что база вернула.
Виктор Голованенко, sorted() требует, чтобы элементы были сравнимы, да и порядок элементов собьёт.
Фз, актуально ли это для автора, но упомянуть стоит.
Я давненько не работал с PHP, но... а разве ты не должен считать контент из псевдо-файла $sendToTelegram? Может, сервер видит, что ты просто закрыл соединение, и не отправляет сообщение.
Дальше суммируешь heights чтобы найти итоговую высоту изображения, находишь максимальное значение из widths и так определяешь размер результирующего изображения.
Аналогично циклом делаешь paste(), только тебе нужно будет в отдельной переменной (отступ) отслеживать суммарную высоту уже вставленных изображений. Вначале отступ 0, вставил картинку с отступом - прибавил её высоту к отступу. Следующая картинка уже вставится с увеличенным отступом.