violpeople, можете привести пример call.data, хоть print-ом его распечатайте... и на какую команду оно реагировать должно по-вашему?
Я так понимаю, что там что-то вроде 'add_2_bla-bla', которое говорит, что надо добавить куда-то (в корзину, например) элемент из списка с порядковым номером 2?
Если это так, то причина, по которой происходит сдвиг, банальна - нумерация в списках начинается с нуля, а у обычных людей - с 1. Вот и сдвиг...
items - это не словарь, а список.
Кода по-моему не хватает, чтобы понять, почему так происходит.
Не понятно, что такое call.data... догадываюсь, что оно возвращает некую строку, которую вы делите на части по знаку подчеркивания методом split, получаете список, затем берете предпоследний элемент этого списка и присваиваете ему имя current_item.
Но что там внутре, и как оно соотносится со списком items, можно только гадать. А у меня гадальные карты потерялись, шар треснул, а кофе кончился...
zerx1, в инете в гугле овердохрена ссылок на разнообразные снифферы на пайтоне. Вы пробовали туда заглянуть? Там должно быть полно библиотек, которые уже применяли и опробовали. И, возможно, можно взять любую из тех поделок за основу и прикрутить к нему GUI.
Оберните код тегом code.
Не забудьте проверить отступы.
Также длинный код лучше спрятать под спойлер.
Ошибку лучше приводить полностью.
И хорошо бы лишнюю воду из кода убрать…
FanatPHP, взаимно, дорогой пришелец. Взаимно. Не указывай, что мне делать, и я не скажу тебе, куда идти.
А раз указываешь - то принимай и в свою сторону то же самое.
FanatPHP, для сведения - задача куратора в том, чтобы помогать вопрошающим получать ответы, подсказывать, как лучше оформить вопрос, чтобы получить ответ с большей вероятностью, при этом соблюдая правила ресурса.
Касательно ответа по теме вопроса - ты знаешь ответ на вопрос - возьми да напиши свой ответ, что мешает?
FanatPHP, конечно, есть. Но есть и нюанс. Объект для раскодирования должен иметь метод read - а у топикстартера явно сказано «строка». Строка не имеет метода read.
Если строку записать, к примеру, в файл, потом открыть этот файл и передать полученный объект на вход json.load() - всё прекрасно раскодируется.