VVV000xxx, как открываешь файл? Приведи код.
Особенно обрати внимание на второй параметр, если он "w", то ты опустошаешь файл перед открытием. "a" означает добавить содержимое к файлу.
Сергей Еремин,
Если твой веб-прокси даёт в итоге URL вида https://my.proxy/target.site/path/in/target.html, то большинство относительных ссылок сработают и так.
Исключение составят ссылки от корня сайта (/another/page.html), но их можно детектить, и они будут встречаться не так часто.
Ссылки без протокола тоже детектятся с минимальным исправлением в регулярке, типа (https?:)?//
Ссылки на якори вообще не должны менять страницу, а потому не нуждаются в обработке.
GET параметры и прочее должны подхватиться группой .+, до тех пор пока в get параметре нет незакодированной в urlencode кавычки или апострофа - но в то же время, если такая кавычка есть, то это уже будет сломанная напрочь XML разметка. Тут ничего не поделаешь.
Ещё можно попробовать другой подход.
Используй xml.sax. Я не до конца уверен, что он не подавится XML с незакрытыми тегами - это надо проверить. Но по идее на его основе можно написать простую автозакрывашку тегов. Просто хранить стэк текущих открытых тегов, при открытии тега - добавлять его на стэк, при закрытии тега - выталкивать теги со стэка и закрывать их, пока не найдём совпадающий тег.
Xacker_Name, если не знаешь в каком диапазоне значений будет число, тогда экспоненциальная нотация (2e-12) удобнее.
И потом, ты же в курсе, что многие числа нельзя точно представить в виде float?
>>> print(0.1+0.2)
0.30000000000000004
Это - погрешность представления float. Так что определить количество значимых цифр в числе - задача нетривиальная, и не всегда выполнимая.
Вопрос нуждается в уточнении.
Что именно имеется ввиду под "открыл файл"? Запустил ассоциированную с типом файлов программу? Или просто вызвал на нем open()? И если последнее, что что бот должен сделать с этим файловым объектом? Просто выбросить?
BANmrP, ну вот, у тебя есть объет msg.Author, у него и вызывай метод AddRoleAsync(). Нужно только сообразить как получить объект нужной роли, но тут уж лазай по документации.
szjyakgf, time.time() возвращает метку времени - число целых и дробных секунд, прошедшее с 1 января 1970 года (т.н. эпоха Unix). Так что просто прибавляешь к этому значению срок выраженный в секундах. 3 часа будет 3 * 60 * 60.
lr_udbe_999, тогда бери Марк Лутц, "Изучаем Питон", и вникай. Осилишь - возвращайся к созданию бота.
Просто потому что боты - вещь нетривиальная, независимо от того что утверждают ютуберы. Начинать сразу с них, не разобравшись с переменными, функциями, классами, асинхронным программированием как таковым - плохая идея.
А готовый код - это не сюда, это туда.
Андрей Годунко,
1. Хауди Хо смотреть - только себе вредить. "Изучаем Питон" - книжка объемная, но зато разжевывает каждую тему.
2. Начиная с какого места непонятно?
3. Стоп. Уже от трех по порядку? В заголовке вопроса вроде речь идёт строго про три числа?
4. За готовым кодом вон туда. Тут могут попробовать объяснить, как написать самому. Да и потом, если ты сейчас практику пройдёшь на всем готовом, какой толк от тебя будет на олимпиаде?
Dima_dawefwf, ну про что и речь, просто примени мою идею к своему коду.
Отдельно - функции элементы списка. Отдельно - функция обработчик кнопки. Эта функция выбирает случайный элемент-функцию списка (во временную переменную), удаляет выбранное из списка, и вызывает.
Всё. Если ты код в вопросе сам написал, то с переделкой справишься, тут ничего нового.