当前位置: 首页 > 工具软件 > ItChat > 使用案例 >

itchat入门

黄彬
2023-12-01


现阶段近几年注册的微信号应该是用不了这个了,以前的应该还可以,我再22年初的时候试了一下我的可以用,有需要的还是可以试试。

登录

itchat.auto_login(hotReload=True,enableCmdQR=True,loginCallback=after_login,exitCallback=after_logout)

使用这个命令可以通过扫描二维码登陆微信,hotReload=True可以省略,不过这样一来每次程序执行时都要扫一次码,有了hotReload=True会生成一个itchat.pkl的文件保存登录状态,可以让后面的几次登录不需要再扫码。

enableCmdQR=True这个参数可以让二维码在命令行显示,可能会由于二维码过大,命令行显示不完整,所以可以把后面的True改为显示的倍数。可省略

loginCallback=函数名,exitCallback=函数名:这两个参数是在微信登录和退出时分别执行其对应的函数。可省略。

保持运行状态

itchat.run()

保持运行状态,不会因为命令执行完毕就结束

退出登录

itchat.logout()

强制性退出微信。

发送消息

send

send("Message", toUserName=“UserName”)

第一个参数可以发送文本消息,图片(img),视频(vid)和文件(fil)。文本消息只要直接编写文字内容在引号中就可以了,其他的要保证格式“@type@%s”%‘path’,具体示例如下

    import itchat
    
    itchat.auto_login()
    
    itchat.send("HelloWorld!")
    
    ithcat.send("@fil@%s" % '/tmp/test.text')
    
    ithcat.send("@img@%s" % '/tmp/test.png')
    
    ithcat.send("@vid@%s" % '/tmp/test.mkv')

第二个参数是用来确定发送的对象,如果省去或者是None就是发送给自己,如果是filehelper就是发送给文件助手。

send_msg

除了上面这种方法,还有另一种方法可以完成同样的效果,下面我们来看一下。

    send_msg('Text Message', toUserName=None)

发送文字信息的方法和上面那种几乎没什么差异,不过一开始就确定了发送到信息类型。返回值为True或者False返回值为True或者False.

    import itchat
    itchat.auto_login()
    itchat.send_msg("helloworld.)

send_file

   send_file(“fileDir”,
   toUserName=None) 

fileDir是文件路径, 当文件不存在时, 将打印无此文件的提醒,返回值为True或者False。

    import itchat 
    itchat.auto_login()
    itchat.send_file("/tmp/test.txt")

send_image

    send_image(“fileDir”,toUserName=None)  

参数同上

    import itchat
    itchat.auto_login()itchat.send_img("/tmp/test.jpg")

send_video

    send_video(fileDir,toUserName=None)

参数同上

    import itchat
    itchat.auto_login()
    itchat.send_video("/tmp/test.mp4")

监听消息

除了主动发送信息外,还可以对信息进行监控,支持对多种类型的信息进行监控。
另外,有多个注册信息监听,后注册的信息优先级高于先注册信息,带参数信息高于不带参数信息。

信息类型解释
itchat.content.TEXT文本内容
itchat.content.MAP位置文本
itchat.content.Card名片
itchat.content.Note通知文本
itchat.content.Sharing分享名称
itchat.content.RECORDING录音
itchat.PICTURE图片/表情
itchat.content.VOICE录音
itchat.content.ATTACHMENT附件
itchat.content.VIDEO短视频
itchat.content.FRIENDS好友邀请
itchat.content.SYSTEM系统信息

接收消息

接收消息的方法一般用来作为一个函数的装饰器,当接收到消息以后执行函数中的命令进行回应。

    import itchat
    @itchat.msg_register(itchat.content.TEXT)
    def reply_msg(msg):
    	if msg['Content'] == u'你好':
    		itchat.send_msg(msg['User']['NickName'] + "你好啊!", msg['FromUserName'])
    if __name__ == '__main__':
    	itchat.auto_login()
    	itchat.run()

好友信息相关

search_friends

search_friends()

括号里可以填属性字典相关名称来获取指定好友的详细信息,如:名称(name),微信号(wechatAcount),昵称和微信号的查找可以同时使用。一般直接填写名称或者备注名,会优先查找NickName和RemarkName,可以直接查找到,这也是比较方便的方法

    import itchat
    itchat.auto_login(hotReload=True)
    users = itchat.search_friends('大哥')
    print(users)
    userName=users[0]['UserName']
    print(userName)
    itchat.send_msg('你好啊',toUserName=userName)

群聊相关

监听群聊信息

    @itchat.msg_register(itchat.content.TEXT,isGroupChat=True)
    def reply_msg(msg):
    	print("收到一条群信息:", msg['ActualNickName'], msg['Content'])

利用isGroupChat=True 来判定是否是群消息,ActualNickName是发送者昵称,Content是发送的文本信息内容。另外,群聊除了通过群名搜索外还可以通过username来查找,或者两者搭配使用; 在msg里有一个isAt字段,可用于判断是否被人@了。

查找群

    def after_login():
    	print(itchat.get_chatrooms())  #获得所有群信息
    	time.sleep(10)
    	chat_rooms = itchat.search_chatrooms(name='群名')#根据群名查找群
    	if len(chat_rooms) > 0:
     		itchat.send_msg('测试', chat_rooms[0]['UserName'])

公众号相关

大致上和群聊差不多,搜索公众号方法search_mps,监听公众号信息添加isMpChat=True元素

    import itchat
    @itchat.msg_register(itchat.content.TEXT,isMpChat=True)

    def reply_msg(msg):
    	print("收到一条公众号信息:",msg['User']['NickName'], msg['Content'])
    def login_after():
    	mps = itchat.search_mps(name='公众号名')
    	if len(mps) > 0:
    		print(mps)
    		itchat.send_msg('人生苦短',toUserName=mps[0]['UserName'])
    if __name__ == '__main__':
   		itchat.auto_login(loginCallback=login_after)
  	 	itchat.run()
    
 类似资料: