Бот видит пользователей только на тех серверах, куда его добавили и где ему выданы необходимые права (включая member intents). Так что нет, в общем случае нельзя легально получить информацию по серверам, где находится конкретный аккаунт.
Это не копирование, а как раз наоборот отсутствие копирования. В python всё является объектами, а переменные - ссылки на эти объекты, присваивание переменных это передача по ссылке. Поэтому если есть некий объект и мы его присваиваем другой переменной, а потом что-то делаем со второй переменной, то первый объект тоже меняется. Чтобы этого избежать, надо создавать новые объекты или копировать явно по мере необходимости:
>>> a=[1,2,3]
>>> b=a # тут b - ещё одна ссылка на тот же список, что и ссылка a
>>> b.append(4)
>>> a
[1, 2, 3, 4]
>>> b=a[:] # тут b - новый список, копия a
>>> b.append(5)
>>> b
[1, 2, 3, 4, 5]
>>> a
[1, 2, 3, 4]
antonwx, программисты тоже переиспользуют не только общие идеи, но фрагменты уже написанного для других заказчиков кода кода. Можно ли сказать, что они должны уменьшать из-за этого свой ценник?
В архитектуре так много сложностей и нюансов, что на этом малореально как-то нажиться. Ну, скажем, обмеряли некоторое здание 5 лет назад, а сейчас получили другой контракт по этому же зданию, можно было бы выслать человека обмерять ещё раз от и до, а можно сэкономить один день и взять часть нужных размеров из уже имеющихся данных, сэкономить полпроцента расходов.
Сферический конь в вакууме. Сколько там будет клиентов, как часто они будут делать запросы, какие будут объёмы данных, как часто будет происходить запись? Всё это крайне важно даже для очень грубой оценки разумности того или иного решения.
Для приличной по сложности и количеству клиентов игры весьма велики шансы, что некоторые данные будет смысл хранить вообще не в базе (в файлах? в key-value? в nosql?), некоторые будет иметь смысл прозрачно кэшировать в памяти (write-through или write-back), ну и всякие разные другие варианты.
До кучи, в процессе разработки и в дальнейшем промышленной эксплуатации некоторые решения обязательно потребуют пересмотра и доработки.
Виктор, не всё так просто. Например, пользователь покупает винду или компьютер с нею предустановленной, а с сетью какая-то беда и активация не проходит. В первую очередь именно интересы таких пользователей и защищаются. Или комп выходит из строя, вместо него собирают из хлама или в ближайшем ларьке покупают другой, а систему поставить и активировать проблематично. Ну, чтобы работать можно было начать прямо сейчас, а проблемы решить в фоновом режиме.
Конечно, определённые маркетинговые уловки тут тоже могут быть (особенно всякие Preview-версии (фактически, пользователи таковых участвуют в бета-тесте), но прямо задачи дать возможность бесплатно пользоваться 90 дней любым польщователям вообще без покупки и без документов у MS точно не стояло.
Антон, если надо отдать пользователю excel-файл, который может долго генерироваться, то эту задачу решают иначе, например, выносят генерацию в фоновый процесс, а пользователю показывают прогрессбар или предлагают чуть попозже в разделе заявок получить исполненную заявку на файл. Что именно тормозило при создании файла - база, генерация файла, сеть или пятна на Солнце - тут неважно.
Но нет никакого смысла вообще об этом задумываться, если файл генерируется достаточно быстро и при этом не мешает другим пользователям сайта.
olegus21, но мы в свою очередь ничего не можем знать наверняка, так как не имеем достаточно информации. Хотя если это реально всего лишь 6 кликов, то как-то странно реагировать на них столь быстро в любом случае. Кстати, возможно, причина как раз в параллельном вопросе найдётся.
2. В обработчике callback брать number_current из call.data, откусывая item: в начале (я показывал выше), затем вызывать от него make_keyboard и дальше делать bot.edit_message_text с новой клавиатурой.
Drill, в принципе это тривиально решается, а ещё лучше просто поставить проверку в начале, чтобы при неравных длинах кидать исключение, что было бы весьма логично и позволило бы отлавливать возможные косяки.
olegus21, "скорее всего" ни к чему не обязывает. Например, это может быть один конкретный пользователь из Австрии, у которого почему-то из-за каких-то глюков не засчитались установки и показы, но который случайно попадал по рекламе пальцем. Мне кажется, если там сотни показов по другим странам и всё выглядит в них разумно, то 4 жалких клика из Австрии вряд ли бы стали причиной ограничений и наверняка проблема где-то ещё. Но, конечно, мы тут можем только гадать.
Вова Ефанов, вопрос абсолютно непонятен. Что значит "вывести"? В примере кода делается просто UPDATE, причём без реального изменения данных - они остаются прежними.
Пользователи из Австрии были посчитаны гуглом как пользователи не из Австрии. Или пользователи не из Австрии были посчитаны AdMob как пользователи из Австрии. Ещё надо понимать, что формальная принадлежность IP-адресов условна, это могут быть блоки адресов трансконтинентальных провайдеров, это могут быть адреса, изменившие владельца, в том числе переместившиеся в другую страну, это могут быть VPN-сервисы и ещё много чего. В конце концов, пользователи могут перемещаться между странами, в том числе ездить в командировки и отпуска.
self.associatives=[Associative()]*associatives
Создаётся массив ссылок на один и тот же экземпляр Associative(). Самое простое решение:
Я расставил по классам __repr__ с показом id объектов для тестирования. Код: https://pastebin.com/eyuGuTsY