dimank26 0 Posted January 18, 2020 Что делать? В чём ошибка может быть? Quote Share this post Link to post Short link Share on other sites
ktulho 5,780 #475268 Posted January 18, 2020 Импортируете MessengerEntry, а вызываете messenger. Quote Share this post Link to post Short link Share on other sites
dimank26 0 #475269 Posted January 18, 2020 21 минуту назад, ktulho сказал: Импортируете MessengerEntry, а вызываете messenger. from messenger import MessengerEntry Ну я же импортировал Quote Share this post Link to post Short link Share on other sites
ktulho 5,780 #475270 Posted January 18, 2020 12 минут назад, dimank26 сказал: Ну я же импортировал Что импортировали? Quote Share this post Link to post Short link Share on other sites
dimank26 0 #475271 Posted January 18, 2020 4 минуты назад, ktulho сказал: Что импортировали? MessengerEntry 15 минут назад, ktulho сказал: Что импортировали? Код: import BigWorld from gui import SystemMessages from messenger import MessengerEntry from constants import PREBATTLE_TYPE from messenger.m_constants import PROTO_TYPE message = u'Hello World' class CommonChannelCriteria(object): def filter(self, channel): return channel.getName() == messenger.m_constants.LAZY_CHANNEL.COMMON ctrl = messenger.MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) ctrl.sendMessage(message.encode('utf-8')) Quote Share this post Link to post Short link Share on other sites
ktulho 5,780 #475272 Posted January 18, 2020 28 минут назад, dimank26 сказал: MessengerEntry Правильно. А в коде обращаетесь к объекту messenger, которого нет: ctrl = messenger.MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) Попробуйте: ctrl = MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) PS Хотя посмотрел еще раз код. Попробуйте так: from gui import SystemMessages from messenger import MessengerEntry from constants import PREBATTLE_TYPE from messenger.m_constants import PROTO_TYPE, LAZY_CHANNEL message = u'Hello World' class CommonChannelCriteria(object): def filter(self, channel): return channel.getName() == LAZY_CHANNEL.COMMON ctrl = MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) ctrl.sendMessage(message.encode('utf-8')) Quote Share this post Link to post Short link Share on other sites
dimank26 0 #475273 Posted January 18, 2020 10 минут назад, ktulho сказал: Правильно. А в коде обращаетесь к объекту messenger, которого нет: ctrl = messenger.MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) Попробуйте: ctrl = MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) Тогда перекидывает ошибку ( NameError: global name 'messenger' is not defined ) На данную строку: return channel.getName() == messenger.m_constants.LAZY_CHANNEL.COMMON Пробовал заменить на: return channel.getName() == MessengerEntry.m_constants.LAZY_CHANNEL.COMMON Тогда выдаёт ошибку ( AttributeError: 'module' object has no attribute 'm_constants' ) Quote Share this post Link to post Short link Share on other sites
ktulho 5,780 #475275 Posted January 18, 2020 9 минут назад, dimank26 сказал: На данную строку: Смотрите выше, я поправил. Quote Share this post Link to post Short link Share on other sites
dimank26 0 #475276 Posted January 18, 2020 3 минуты назад, ktulho сказал: Смотрите выше, я поправил. Оооо, работает, спасибо большое, но русские символы так и не хотят почему-то) Quote Share this post Link to post Short link Share on other sites
ktulho 5,780 #475279 Posted January 18, 2020 @dimank26 попробуйте так: import locale from gui import SystemMessages from messenger import MessengerEntry from constants import PREBATTLE_TYPE from messenger.m_constants import PROTO_TYPE, LAZY_CHANNEL message = u'Hello World' class CommonChannelCriteria(object): def filter(self, channel): return channel.getName() == LAZY_CHANNEL.COMMON ctrl = MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) ctrl.sendMessage(message.decode(locale.getdefaultlocale()[1]).encode('utf-8')) Quote Share this post Link to post Short link Share on other sites
dimank26 0 #475280 Posted January 18, 2020 2 минуты назад, ktulho сказал: @dimank26 попробуйте так: import locale from gui import SystemMessages from messenger import MessengerEntry from constants import PREBATTLE_TYPE from messenger.m_constants import PROTO_TYPE, LAZY_CHANNEL message = u'Hello World' class CommonChannelCriteria(object): def filter(self, channel): return channel.getName() == LAZY_CHANNEL.COMMON ctrl = MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) ctrl.sendMessage(message.decode(locale.getdefaultlocale()[1]).encode('utf-8')) Quote Share this post Link to post Short link Share on other sites
ktulho 5,780 #475281 Posted January 18, 2020 Еще такой вариант: ctrl.sendMessage(message.decode('ascii').encode('utf-8')) Quote Share this post Link to post Short link Share on other sites
dimank26 0 #475282 Posted January 18, 2020 4 минуты назад, ktulho сказал: Еще такой вариант: ctrl.sendMessage(message.decode('ascii').encode('utf-8')) Пробовал кстати этот вариант, может передавать в unicode как-то? просто если отправлять уже в unicode, то символы русские Quote Share this post Link to post Short link Share on other sites
ktulho 5,780 #475292 Posted January 18, 2020 from gui import SystemMessages from messenger import MessengerEntry from constants import PREBATTLE_TYPE from messenger.m_constants import PROTO_TYPE, LAZY_CHANNEL message = 'Привет мир' class CommonChannelCriteria(object): def filter(self, channel): return channel.getName() == LAZY_CHANNEL.COMMON ctrl = MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) ctrl.sendMessage(message) Quote Share this post Link to post Short link Share on other sites
dimank26 0 #475296 Posted January 18, 2020 11 минут назад, ktulho сказал: from gui import SystemMessages from messenger import MessengerEntry from constants import PREBATTLE_TYPE from messenger.m_constants import PROTO_TYPE, LAZY_CHANNEL message = 'Привет мир' class CommonChannelCriteria(object): def filter(self, channel): return channel.getName() == LAZY_CHANNEL.COMMON ctrl = MessengerEntry.g_instance.gui.channelsCtrl.getControllerByCriteria(CommonChannelCriteria()) ctrl.sendMessage(message) Quote Share this post Link to post Short link Share on other sites
ktulho 5,780 #475297 Posted January 18, 2020 Quote Share this post Link to post Short link Share on other sites
dimank26 0 #475298 Posted January 18, 2020 5 минут назад, ktulho сказал: Что-то явно у меня не так видимо) Quote Share this post Link to post Short link Share on other sites