Английская версия
itchat — это интерфейс личной учетной записи WeChat с открытым исходным кодом. Вызов WeChat с помощью Python еще никогда не был таким простым.
Менее чем с тридцатью строками кода вы можете создать бота WeChat, способного обрабатывать всю информацию.
Конечно, использование этого API — это нечто большее, чем просто робот, и вам предстоит открыть для себя множество функций, таких как эти.
Этот интерфейс использует тот же метод работы, что и интерфейс общедоступной учетной записи itchatmp, и вы можете научиться осваивать два инструмента одновременно.
В настоящее время WeChat стал важной частью личного социального взаимодействия. Я надеюсь, что этот проект поможет вам расширить вашу личную учетную запись WeChat и облегчить вашу жизнь.
Вы можете установить itchat с помощью этой команды:
pip install itchat
Если с помощью itchat вы хотите отправить сообщение помощнику по передаче файлов, просто сделайте следующее:
import itchat
itchat . auto_login ()
itchat . send ( 'Hello, filehelper' , toUserName = 'filehelper' )
Если вы хотите ответить на текстовое сообщение, отправленное самому себе, просто сделайте следующее:
import itchat
@ itchat . msg_register ( itchat . content . TEXT )
def text_reply ( msg ):
return msg . text
itchat . auto_login ()
itchat . run ()
Некоторые расширенные приложения можно увидеть в исходном коде и расширенных приложениях робота с открытым исходным кодом ниже, или вы также можете прочитать документацию.
Это небольшой робот с открытым исходным кодом, основанный на этом проекте. Лучше услышать о нем, чем увидеть. Если вам интересно, вы можете попробовать.
Поскольку количество друзей растет слишком быстро, демонстрация функции автоматического прохождения проверки друзей временно закрыта.
Распечатав пользователя itchat и параметры регистрационного сообщения, вы можете обнаружить, что все эти значения являются словарями.
Но на самом деле itchat тщательно сконструировал соответствующие сообщения, пользователей, групповые чаты и публичные аккаунты.
Доступ ко всем его ключевым значениям можно получить таким образом:
@ itchat . msg_register ( TEXT )
def _ ( msg ):
# equals to print(msg['FromUserName'])
print ( msg . fromUserName )
Имя атрибута представляет собой строчную первую букву значения ключа.
author = itchat . search_friends ( nickName = 'LittleCoder' )[ 0 ]
author . send ( 'greeting, littlecoder!' )
С помощью следующего кода WeChat уже может получать различную ежедневную информацию и отвечать на нее.
import itchat , time
from itchat . content import *
@ itchat . msg_register ([ TEXT , MAP , CARD , NOTE , SHARING ])
def text_reply ( msg ):
msg . user . send ( '%s: %s' % ( msg . type , msg . text ))
@ itchat . msg_register ([ PICTURE , RECORDING , ATTACHMENT , VIDEO ])
def download_files ( msg ):
msg . download ( msg . fileName )
typeSymbol = {
PICTURE : 'img' ,
VIDEO : 'vid' , }. get ( msg . type , 'fil' )
return '@%s@%s' % ( typeSymbol , msg . fileName )
@ itchat . msg_register ( FRIENDS )
def add_friend ( msg ):
msg . user . verify ()
msg . user . send ( 'Nice to meet you!' )
@ itchat . msg_register ( TEXT , isGroupChat = True )
def text_reply ( msg ):
if msg . isAt :
msg . user . send ( u'@%s u2005 I received: %s' % (
msg . actualNickName , msg . text ))
itchat . auto_login ( True )
itchat . run ( True )
Вы можете использовать командную строку для отображения QR-кода при входе в систему с помощью следующей команды:
itchat . auto_login ( enableCmdQR = True )
Некоторые системы могут иметь разную ширину символов, которую можно настроить, присвоив параметру EnableCmdQR определенное кратное значение:
# 如部分的linux系统,块字符的宽度为一个字符(正常应为两字符),故赋值为2
itchat . auto_login ( enableCmdQR = 2 )
Цвет фона консоли по умолчанию — темный (черный). Если цвет фона светлый (белый), параметру EnableCmdQR можно присвоить отрицательное значение:
itchat . auto_login ( enableCmdQR = - 1 )
Войдите в систему с помощью следующей команды. Даже если программа закрыта, вы можете открыть ее снова в течение определенного периода времени без повторного сканирования кода.
itchat . auto_login ( hotReload = True )
Используйте метод search_friends
для поиска пользователей. Существует четыре метода поиска:
UserName
name
Три или четыре из них можно использовать вместе. Ниже приведен пример программы:
# 获取自己的用户信息,返回自己的属性字典
itchat . search_friends ()
# 获取特定UserName的用户信息
itchat . search_friends ( userName = '@abcdefg1234567' )
# 获取任何一项等于name键值的用户
itchat . search_friends ( name = 'littlecodersh' )
# 获取分别对应相应键值的用户
itchat . search_friends ( wechatAccount = 'littlecodersh' )
# 三、四项功能可以一同使用
itchat . search_friends ( name = 'LittleCoder机器人' , wechatAccount = 'littlecodersh' )
Приобретение и поиск официальных аккаунтов и групповых чатов более подробно описаны в документации.
Метод загрузки вложений Itchat хранится в текстовом ключе сообщения.
Имя отправленного файла (имя файла по умолчанию, указанное на рисунке) сохраняется в ключе FileName сообщения msg.
Метод загрузки принимает доступный позиционный аргумент (включая имя файла) и сохраняет файл соответствующим образом.
@ itchat . msg_register ([ PICTURE , RECORDING , ATTACHMENT , VIDEO ])
def download_files ( msg ):
msg . download ( msg . fileName )
itchat . send ( '@%s@%s' % (
'img' if msg [ 'Type' ] == 'Picture' else 'fil' , msg [ 'FileName' ]),
msg [ 'FromUserName' ])
return '%s received' % msg [ 'Type' ]
Если вам не нужно загружать его локально и вы просто хотите прочитать двоичную строку для дальнейшей обработки, вы можете не передавать никаких параметров. Этот метод вернет двоичную строку изображения.
@ itchat . msg_register ([ PICTURE , RECORDING , ATTACHMENT , VIDEO ])
def download_files ( msg ):
with open ( msg . fileName , 'wb' ) as f :
f . write ( msg . download ())
Используйте следующую команду для выполнения нескольких операций открытия:
import itchat
newInstance = itchat . new_instance ()
newInstance . auto_login ( hotReload = True , statusStorageDir = 'newInstance.pkl' )
@ newInstance . msg_register ( itchat . content . TEXT )
def reply ( msg ):
return msg . text
newInstance . run ()
Метод после завершения входа в систему необходимо назначить в loginCallback
.
Метод после выхода должен быть назначен в exitCallback
.
import time
import itchat
def lc ():
print ( 'finish login' )
def ec ():
print ( 'exit' )
itchat . auto_login ( loginCallback = lc , exitCallback = ec )
time . sleep ( 3 )
itchat . logout ()
Если значение loginCallback не установлено, изображение QR-кода будет автоматически удалено, а отображение командной строки очистится.
Вопрос: Как с помощью этого пакета превратить мой идентификатор WeChat в контроллер?
О: Есть два способа: отправка и получение сообщений от вашего имени пользователя; отправка и получение сообщений помощника по передаче файлов (filehelper);
Вопрос: Почему некоторые сообщения не отправляются успешно?
О: Некоторые учетные записи по своей сути не могут отправлять сообщения на свои собственные учетные записи. Вместо этого рекомендуется использовать filehelper
.
LittleCoder: Разработка и поддержка версий Python2 и Python3.
tempdban: протокол, архитектура и ежедневное обслуживание.
Chyroc: Завершена первая версия архитектуры Python3.
youfou/wxpy: отличная упаковка API и поддерживающие плагины, робот WeChat/элегантный API личного аккаунта WeChat.
liuwons/wxBot: аналогичный робот WeChat на базе Python.
zixia/wechaty: робот для личного аккаунта WeChat, платформа/библиотека NodeJS на основе Javascript (ES6).
sjdy521/Mojo-Weixin: клиентская платформа WeChat, написанная на языке Perl, которая может предоставлять интерфейс API на основе протокола HTTP через плагины для вызова других языков.
HanSon/vbot: робот личного кабинета WeChat на основе PHP7, который может легко реализовывать различные настраиваемые функции путем реализации анонимных функций.
yaphone/itchat4j: Использование Java для расширения возможностей персонального идентификатора WeChat ID
kanjielu/jeeves: робот WeChat, разработанный с использованием Springboot
Если у вас есть какие-либо вопросы или предложения, вы можете обсудить их со мной в этом выпуске.
Или вы также можете общаться на Gitter:
Конечно, вы также можете присоединиться к нашему новому групповому обсуждению QQ: 549762872, 205872856.