до тех пор пока они не попадают в стандартную библиотеку.
Сторонние модули будут всегда, в независимости от того хорошо они написаны или криво, из за того что в стандартную библиотеку по простому все не влезет, да и не надо оно там.
Вообще, если разобраться по большому счету, то использование чужих модулей конкретно сказывается на юзерах
Это тоже довольно спорно, юзер может даже и не знать что в программе используется тот или иной не стандартный модуль, по простому я могу распространять свою программу с этими модулями.
а второе-это кривизна кода самого модуля
Я думаю что люди пишущие модули, вполне способны качественно написать код, тем более если они это пишут не только для себя.
которое неизвестно как будет работать.
Вполне известно, например для этой либы в документации есть файлик how-it-works.html где вполне кратко описан алгоритм работы либы (в крайнем случае можно пробежаться по коду).
С этим согласен, бот должен по возможности состоять только из кода входящего в стандартную библиотеку (для минимизации размера, и возможность запуска в различных средах).
Еще как вариант, можно использовать вот такой способ:
Код:
enc_list=['utf-8', 'windows-1251', 'IBM866']
def try_encoding(text):
for try_enc in enc_list:
try:
unicode(text, try_enc, "strict")
except:
pass
else:
break
return try_enc
Правда с 866 он не выдает экзепшен, так что для этой кодировки нужно придумать что ни будь другое.