Главный вопрос: задача учебная или практическая?
Если учебная - приведите точно задание и покажите своё решение, пусть не работающее.
Если практическая - нужен контекст, т.е. для чего весь этот танец с саблями, какая конечная цель?
Оформить парсер хотя бы в виде функции, и вызывать её из бота, получая от функции либо нужные для публикации объекты, либо отлуп типа «ничего нету».
Там, конечно, будут нюансы вроде «сделать парсер неблокирующим» и всё такое.
Во-первых, оберните код тегом code.
Во-вторых, этот код разбирать и править - бесполезно. Вам уже сказали, как сделать лучше. Вы сказали, что учитесь - так учИтесь! Освойте Selenium, он не простой, но логичный и довольно наглядный.
С requests сложнее, он менее наглядный и более абстрактный, и требует больше знаний и понимания, как работает http и как правильно создавать запросы и разбирать ответы.
Также лучше приводить такой код, который можно скопипастить и запустить у себя. Добавьте необходимые импорты, функции или значения, в общем, если хотите, чтобы ваш код с большей вероятностью посмотрели и разобрали, сделайте, чтобы эксперту было удобно с ним работать.
Замените скриншот кода на код в тексте, обернутый тегом code.
Также не совсем понятно, какие проблемы с теми вариантами, которые перечислены?
Другое дело, что лучше не использовать имена, которые могут пересекаться с другими похожими, например parser - мало ли парсеров, назови его my_parser или еще как-то по-другому от греха...
Не знаю, как там это реализовано, но тебе надо получить список уникальных объектов, которые можно сопоставить с твоими _id, и подать этот список как аргумент random.choices().
Что-нибудь примерно такое:
random_id = random.choices([str(id) for id in my_collection.find().distinct('_id')])
Оберните код в вопросе тегом code, длинную простыню спрячьте под спойлер. Рекомендую оставить только тег pygame, так как он является подмножеством Python, и есть правило 3.1
Вы понимаете, что расширение файла должно отражать содержание файла? Вам надо перекодировать файл формата jpg в формат png. А просто переименовать - ничего хорошего не даст.