好吧,我回来在python上为vk写一个机器人。 它显示了生命的第一个迹象和第一个障碍。
其中一个是微笑,可能会在私人消息或聊天中到达。 我有一个函数,使用我自己的函数和json库将每个传入的消息反汇编成字符串。
#getting a message
def getmessage(out, count):
payload['out']=str(out)
payload['count']=str(count)
return json.loads(requests.get(api+'messages.get', payload).text) ['response']['items'][0]
#disassembling a message
def messageanalysis(message):
m=message
mes={
'date':m['date'],
'id':m['id'],
'user_id':m['user_id'],
'body':m['body']}
return mes
那么,然后我.split()字符串mes [' body']并将其中的每个单词与一组模板进行比较,并根据结果决定要回答的内容。
刚才我收到私信中的笑容,程序崩溃了,不知道如何处理.png文件。有趣的是,与在vk服务器接收的对象" message"中有自己的参数的常规附件不同,微笑直接集成到消息正文中。我应该做些什么来至少防止程序因为微笑而崩溃,或者哪个更好,让它识别出微笑被发送了?
====== 错误:
Traceback (most recent call last):
File "C:\BOT\Body.py", line 24, in <module>
print('User_id: '+str(m['user_id'])+'\nMessage: '+str(m['body'])+'\n')
File "C:\Users\Арсений\AppData\Local\Programs\Python\Python35-32 \lib\idlelib\PyShell.py", line 1344, in write
return self.shell.write(s, self.tags)
UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 28-28: Non-BMP character not supported in Tk
答案 0 :(得分:0)
您问题中的代码不是问题。您正在使用IDLE(基于错误消息),该IDLE不支持在Unicode的“基本多语言平面”之外显示字符(表情符号在BMP之外)。您应该切换到使用命令提示符,或在打印前将非BMP字符替换为其他字符。