精华内容
下载资源
问答
  • 其实也不算是机器人,也类似于搜索的样子,只不过以聊天界面的形式展现出来,当然了,在完成这个流程的过程中,也会出现一些问题,思路记录,仅供参考。 2.思路: 2.1 毋庸置疑,首先搭建前端界面(这块没什么可说...

    1.场景:

    输入关键词,对内容库进行检索,得到搜索结果,反馈给用户。其实也不算是机器人,也类似于搜索的样子,只不过以聊天界面的形式展现出来,当然了,在完成这个流程的过程中,也会出现一些问题,思路记录,仅供参考。

    2.思路:

    2.1 毋庸置疑,首先搭建前端界面(这块没什么可说的,对方和自己的样式最好大多数一样,通过一个‘me’和‘you’来进行区分,比较好);

    2.2 逻辑处理部分(数据缓存处理):

    有些可能需要做消息的缓存处理,利用‘键名’和‘键值’保存即可(但当然了,这不是惠话)。如果业务比较简单,一个城市,一个机器人,不要判断今天是今天(有些场景可能会涉及默认消息,比如默认消息,今天只发送一次,然后等明天再发送,怎么判断今天是今天)。所以如下:

    2.2.1这里最好以城市加一个后缀或者前缀为键值,对发送过的消息进行做缓存处理。把城市做键值,缓存的消息体以json格式(外层数组方便遍历,数组内层每项以对象形式,对象中每一项通过键值对的方式,添加自己所需要的字段内容即可)。

    2.2.2 判断今天是否发过默认消息(判断今天是今天),通过时间来区分,时间是唯一的。每发送一条消息时,获取时间(只取年月日),每次发送时从缓存中取时间,若缓存中无时间或缓存中的时间和当前时间不一致则把当前时间存入缓存并发送默认消息,若缓存时间和当前时间一致则不用更新缓存时间。每次发送消息都需要更新本地缓存记录。

    2.2.3 缓存的消息一般需要做条数限制(因为小程序对缓存大小有上限),每发一条消息取出缓存中的消息把这条消息加入到取出的数组中,同时判断这个取出的数组长度是否大于最大条数限制,如果超过了就把取出的数组的第一删掉,如果没超过则不用管,然后再把取出的数组存入缓存中即可。

    3.代码

    3.1wxml

    <view class='chating-wrapper'>
      <!--消息展示-->
      <view class='record-wrapper'>
        <view wx:if="{{current_list.length}}">
          <block wx:for="{{current_list}}" wx:for-item='list' wx:for-index='listidx'>
            <!-- 收 -->
            <view class="record-chatting-item {{list.kind=='you'?'other':''}}" wx:if="{{list.kind=='you'}}">
              <view class="record-chatting-item-img"></view>
              <view class="record-chatting-item-text qst">
                <view class='qst-ul'>
                  <view class="qst-li">{{list.list_ul}}</view>
                </view>
              </view>
            </view>
            <!-- 发 -->
            <view class="record-chatting-item {{list.kind=='me'?'self':''}}"  wx:if="{{list.kind=='me'}}">
              <view class="record-chatting-item-text qst">
                <view class='qst-ul'>
                  <view class="qst-li">{{list.list_ul}}</view>
                </view>
              </view>
              <view class="record-chatting-item-img"></view>
            </view>
          </block>
        </view>
      </view>
    </view>
    <!--输入框-->
    <view class="chatinput-wrapper {{input_flag?'mb16':''}}">
      <view class="chatinput-content flex alignC flexSb">
        <view class="chatinput-img"></view>
        <view class='chatinput-inputOut'>
          <input class='chatinput-input' bindinput='inputChange' bindconfirm='inputSend' placeholder='请输入关键词"' confirm-type='send' value='{{inputValue}}' bindfocus='inputFocus' bindblur='inputBlue'></input>
        </view>
        <view class='chatinput-sendOut'>
          <view class='chatinput-send' catchtap='inputSend'>发送</view>
        </view>
      </view>
    </view>

    3.2wxss

    page {
      height: 100%;
      background-color: #f3f4f6;
    }
    
    .chating-wrapper {
      width: 100%;
      min-height: 100%;
      position: relative;
      box-sizing: border-box;
      background: #f6f6f6;
    }
    
    .record-chatting-item {
      width: 100%;
      padding: 28rpx 23rpx 0;
      box-sizing: border-box;
    }
    
    .record-chatting-item-img, .open-data-userAvatarUrl {
      width: 70rpx;
      height: 70rpx;
      border-radius: 100%;
      display: block;
      overflow: hidden;
    }
    
    .other {
      display: flex;
      flex-direction: row;
      justify-content: flex-start;
      color: #222;
    }
    
    .other .record-chatting-item-text {
      margin-left: 20rpx;
      margin-right: 0;
    }
    
    .self {
      display: flex;
      flex-direction: row;
      justify-content: flex-end;
      color: #fff;
    }
    
    .record-chatting-item-text {
      width: 455rpx;
      border-radius: 8rpx;
      background-color: #fff;
      padding: 26rpx;
      box-sizing: border-box;
      word-wrap: break-word;
      overflow: hidden;
      font-size: 26rpx;
      line-height: 42rpx;
      box-shadow: 0 0 8rpx #dedede;
    }
    
    .qst-li {
      font-size: 26rpx;
      line-height: 1.1;
      padding: 16rpx 6rpx;
      border-bottom: 1rpx solid #d9d9d9;
    }
    
    .qst-li:last-child {
      border: none;
    }
    
    /*底部输入框*/
    
    .chatinput-wrapper {
      width: 100%;
      background-color: #fff;
      border-bottom: 1rpx solid gray;
      position: fixed;
      bottom: 0;
      left: 0;
      height: 92rpx;
    }
    
    .chatinput-img {
      width: 59rpx;
      height: 59rpx;
      border-radius: 100%;
    }
    
    .other .record-chatting-item-img,.chatinput-img,.self .record-chatting-item-img {
      background-image: url(data:image/png;base64,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);
      background-repeat: no-repeat;
      background-position: center;
      background-size: 100%;
    }
    
    .chatinput-content {
      width: 100%;
      height: 92rpx;
      box-sizing: border-box;
      padding: 0 24rpx;
    }
    
    .chatinput-inputOut {
      width: 490rpx;
      height: 60rpx;
      position: relative;
      box-sizing: border-box;
      padding-left: 20rpx;
      padding-right: 20rpx;
      background: #f0f0f0;
      border-radius: 60rpx;
    }
    
    .chatinput-inputmask {
      width: 490rpx;
      height: 60rpx;
      position: absolute;
      left: 0;
      top: 0;
      border-radius: 60rpx;
      z-index: 2;
    }
    
    .chatinput-input {
      width: 100%;
      height: 60rpx;
      border-radius: 60rpx;
      border: none;
      display: inline-block;
      vertical-align: top;
      font-size: 28rpx;
      color: #212121;
      background: #f0f0f0;
    }
    
    .chatinput-sendOut {
      width: 90rpx;
      height: 60rpx;
      position: relative;
    }
    
    .chatinput-sendmask {
      width: 90rpx;
      height: 60rpx;
      position: absolute;
      left: 0;
      top: 0;
      border-radius: 60rpx;
      color: #fff;
      background: #d0d0d0;
      line-height: 60rpx;
      font-size: 26rpx;
    }
    
    .chatinput-send {
      width: 90rpx;
      height: 60rpx;
      line-height: 60rpx;
      text-align: center;
      border-radius: 60rpx;
      color: #fff;
      font-size: 26rpx;
      background-color: orange;
    }
    
    .flex {
      display: flex;
    }
    
    .alignC {
      align-items: center;
    }
    
    .flexSb {
      justify-content: space-between;
    }
    
    .self .record-chatting-item-text {
      background: #38adfa;
      margin-right: 20rpx;
      margin-left: 0;
    }
    
    .mb16{
      margin-bottom: 16rpx;
    }
    
    .record-wrapper{
      padding-bottom: 122rpx;
    }
    

    3.3 js

    var app = getApp();
    Page({
      /**
       * 页面的初始数据
       */
      data: {
        // 输入框的值
        inputValue: '',
        // 当前聊天数据的列表的index
        current_index: 0,
        // 数据列表 
        current_list: [],
        // 缓存最多存的消息条数
        max_length: 5,
        // 是否聚焦
        input_flag: false,
        // 城市
        mycity: 'bj'
      },
    
      /**
       * 生命周期函数--监听页面显示
       */
      onShow: function() {
        var that = this;
        // 首先从缓存中拿缓存的值,若有,则优先渲染
        that.getRecord();
      },
      // 获取缓存记录
      getRecord() {
        var that = this;
        var current_list = that.data.current_list;
        var key_time = 'my' + that.data.mycity + 'time';
        var key_list = 'my' + that.data.mycity + 'list';
        // 初始化
        var myRecord_time = (wx.getStorageSync(key_time) == undefined || wx.getStorageSync(key_time) == '') ? '' : wx.getStorageSync(key_time);
        var myRecord_list = (wx.getStorageSync(key_list) == undefined || wx.getStorageSync(key_list) == '') ? '' : wx.getStorageSync(key_list);
        if (myRecord_time && myRecord_list.length) {
          console.log(myRecord_list)
          that.setData({
            current_list: myRecord_list,
            current_index: myRecord_list.length
          }, function() {
            that.scrollToBottom();
          });
        }
      },
      // 创建缓存记录
      setRecord(par_kind, par_list) {
        var that = this;
        var current_list = that.data.current_list;
        var key_time = 'my' + that.data.mycity + 'time';
        var key_list = 'my' + that.data.mycity + 'list';
        // 初始化
        var myRecord_time = (wx.getStorageSync(key_time) == undefined || wx.getStorageSync(key_time) == '') ? '' : wx.getStorageSync(key_time);
        var myRecord_list = (wx.getStorageSync(key_list) == undefined || wx.getStorageSync(key_list) == '') ? [] : wx.getStorageSync(key_list);
        if (!myRecord_time) {
          wx.setStorage({
            key: key_time,
            data: myRecord_time,
          });
        }
        if (!myRecord_list) {
          wx.setStorage({
            key: key_list,
            data: [],
          });
        }
        myRecord_time = wx.getStorageSync(key_time);
        // 如果缓存中没有时间 或者 和今天的截止时间不一致时,须把今天的截止日期赋给它,同时发送默认消息,同时把截止日赋值给缓存,同时发送默认消息,同时把默认消息开关设置为true
        if (myRecord_time == '') {
          myRecord_time = get_endtime();
          // 用最新的覆盖
          wx.setStorage({
            key: key_time,
            data: myRecord_time,
          });
        }
        // 列表(将获取到的数据从头部添加,相当于最新的)
        var listdata = {
          'kind': par_kind,
          'list_ul': par_list
        };
        if (par_kind && par_list) {
          myRecord_list.push(listdata)
        }
        // 如果超过最大长度,需要截断
        if (myRecord_list.length > that.data.max_length) {
          myRecord_list.splice(0, 1)
        }
        wx.setStorage({
          key: key_list,
          data: myRecord_list,
        });
      },
      // 改变消息列表
      change_list(par_kind, par_list) {
        var that = this;
        var current_index = that.data.current_index;
        var data_key = "current_list[" + that.data.current_index + "]";
        var listdata = {
          'kind': par_kind,
          'list_ul': par_list
        };
        that.setData({
          current_index: current_index + 1,
          [data_key]: listdata,
        });
    
        if (par_kind == 'me') {
          that.setData({
            inputValue: ''
          });
        }
      },
      /**
       * 文本框输入事件
       */
      inputChange(e) {
        var that = this;
        that.setData({
          inputValue: e.detail.value,
        });
      },
      // 发送消息
      inputSend() {
        var that = this;
        var inputValue = that.data.inputValue;
        if (inputValue) {
          var param = {
            city: that.data.mycity,
            keyword: inputValue,
          }
          // 创建记录 往上滚动
          that.scroll_record_list('me', inputValue);
          // 搜索结果
          var num_arr = ["你好哇", "我是元气满满的萌妹子", "你问这个干什么", "尼古拉·阿列克谢耶维奇·奥斯特洛夫斯基", "我在你的内心深处"];
          var num = Math.floor(Math.random() * 5);
          console.log(num)
          if (num != 6) {
            that.scroll_record_list('you', num_arr[num]);
          } else {
            that.scroll_record_list('you', '没有搜索到"' + inputValue + '"相关内容');
          }
        }
      },
      // 聚焦,失焦
      inputFocus(e) {
        var that = this;
        that.setData({
          input_flag: true
        });
      },
      inputBlue() {
        var that = this;
        that.setData({
          input_flag: false
        });
      },
      // 创建记录,同时页面往上滚动
      scroll_record_list(par_kind, par_list) {
        var that = this;
        // 改变消息列表
        that.change_list(par_kind, par_list);
        // 创建记录
        that.setRecord(par_kind, par_list);
        // 往上滚动
        that.scrollToBottom();
      },
      /**
       * 滚动页面到底部
       */
      scrollToBottom() {
        wx.pageScrollTo({
          scrollTop: 999999,
          duration: 100
        });
      },
    })
    
    // 获取当日23:59:59时间
    function get_endtime() {
      var time_end = new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1);
      var time_format = format_date(time_end)
      return time_format;
    }
    
    // 获取当前时间的  年月日时分秒  的时间格式化 20191220100246
    function format_date(now) {
      var year = now.getFullYear(); //年
      var month = now.getMonth() + 1; //月
      var day = now.getDate(); //日
      var hh = now.getHours(); //时
      var mm = now.getMinutes(); //分
      var ss = now.getSeconds(); //秒
    
      var clock = year + "";
      if (month < 10) {
        clock += "0";
      }
      clock += month + "";
    
      if (day < 10) {
        clock += "0";
      }
      clock += day + "";
    
      if (hh < 10) {
        clock += "0";
      }
      clock += hh + "";
    
      if (mm < 10) {
        clock += '0'
      }
      clock += mm;
    
      if (ss < 10) {
        clock += '0'
      }
      clock += ss;
    
      return clock;
    }

    4.效果

     

    5.说明

    5.1 最好封装一个滚动函数,每次发送消息或者每次一进入页面从缓存中读取数据并赋值给当前渲染的数组以后页面就会渲染更新,此时也需要将页面滚动到最底部才比较合理,封装滚动函数后在这两个地方可直接调用就好了;

    5.2 键盘需要做一个底部悬浮,但你会发现 position:fixed;bottom:0 当键盘弹起后,键盘会贴着input的底框框,此时需要做一个聚焦和失焦的处理,聚焦(也就是键盘弹起后给以margin-bottom),失焦的时候再把底部的margin-bottom去掉即可;

    5.3 最开始我还想过通过index做键值的方式对消息缓存更新,后来感觉会有问题(index不靠谱,会出现重复,如果我发了二十条,有一个index二十,明天只取十条,我明天再发到第二十条的index就和之前的index值一样了)(这条可忽略);

    5.4 对于键盘弹起的问题,如果页面消息比较少会存在键盘把消息顶上去的情况,其实对于顶的情况,微信和QQ都是默认让顶的(这样每次都能保证在输入框聚焦的时候,能看到最后一条消息,这也时合理的)。如果你有特别的需要,你们公司产品不让顶上去,可以参考(思路:键盘固定,聚焦也固定,当消息比较多的时候,会挡住最后几条)。其实对于需要顶或者不顶各有优劣吧,根据自己需求取舍。

    展开全文
  • 微信小程序源码-机器人智能回复 机器人兔兔智能在线回复小程序源码
  • 通过flask、urllib、xlrd等库构造一个微信公众号的自动回复机器人,对接图灵机器人。 详细情况见如下: https://mp.weixin.qq.com/s?__biz=MzI3MjM0MDM3Mg==&mid=2247483787&idx=1&sn=df52d12501c...

    通过flask、urllib、xlrd等库构造一个微信公众号的自动回复机器人,对接图灵机器人。
    详细情况见如下:
    https://mp.weixin.qq.com/s?__biz=MzI3MjM0MDM3Mg==&mid=2247483787&idx=1&sn=df52d12501c73140604199854093ea7d&chksm=eb354570dc42cc66266a46c52970efaeadc4da9ee1aee1109b237e12ab4dd9ef162629966dbe&token=462496053&lang=zh_CN#rd

    展开全文
  • 本文是使用Python的itchat模块进行微信私聊消息以及群消息的自动回复功能,必须在自己的微信中添加微信号xiaoice-ms(微软的微信机器人)才能实现,直接复制代码运行之后扫一扫二维码即可,经过测试,该程序能够保持...
  • 本文是使用Python的itchat模块进行微信私聊消息以及群消息的自动回复功能,必须在自己的微信中添加微信号xiaoice-ms(微软的微信机器人)才能实现,直接复制代码运行之后扫一扫二维码即可,经过测试,该程序能够保持...

    本文是使用Python的itchat模块进行微信私聊消息以及群消息的自动回复功能,必须在自己的微信中添加微信号xiaoice-ms(微软的微信机器人)才能实现,直接复制代码运行之后扫一扫二维码即可,经过测试,该程序能够保持几小时的时间。

    实现原理,将别人发送给你的消息转发给AI小冰,然后再将AI的回复转回给那个人。

    群消息也是如此,此外还添加了新年问候语,是否与他人进行AI聊天等功能。不过只能实现文本消息以及微信自带表情的转发,不能转发表情、语音等。

    # -*-coding:utf-8-*-

    import itchat

    import itchat.content as itcontent

    # 登录网页微信,hotReload=True 能让登录时间加长

    itchat.auto_login(hotReload=True)

    # 记录公众号机器人小冰的UserName

    mps = itchat.search_mps(name="小冰")

    AI = mps[0]["UserName"]

    # print(AI)

    # 记录自己的UserName,不然发送消息会发两遍

    username = itchat.get_friends()

    user = username[0]["UserName"]

    # print(username)

    # 记录好友列表里好友的 UserName

    friendsname = [friend["UserName"] for friend in username if friend["UserName"] != user]

    # print(friendsname)

    groupname = itchat.get_chatrooms()

    groups = [group["UserName"] for group in groupname]

    # 这个说来话长~~,有兴趣的可以去上网查查

    @itchat.msg_register(itcontent.TEXT, isFriendChat=True, isMpChat=True, isGroupChat=True)

    def simple_reply(msg, FriendList=[]):

    Fromuser = msg["FromUserName"]

    # 如果是AI而且列表不为空,就将AI发给自己的消息转发给发送消息者

    if msg["FromUserName"] == AI and FriendList:

    # print(msg["FromUserName"])

    itchat.send(msg["Text"], toUserName=FriendList[-1])

    elif Fromuser in friendsname:

    if "新年" in msg["Text"]:

    return "新年快乐,祝您身体健康,万事胜意。"

    # 记录发送消息者入FriendList中

    elif Fromuser not in FriendList and msg["Text"] == "小小冰真漂亮":

    FriendList.append(Fromuser)

    return "通信建立成功"

    # 第一次发送消息过来,回复以下内容

    elif Fromuser in FriendList:

    if msg["Text"] in ["小小冰再见", "小小冰晚安", "小小冰下次聊"]:

    FriendList.remove(Fromuser)

    return "再见,和您聊天十分开心,希望您今天过得愉快!"

    else:

    FriendList.append(Fromuser)

    itchat.send(msg["Text"], toUserName=AI)

    else:

    text = """Mr.D先生现在不在,我是助手AI,有要事请拨打号码:xxxxxxxxxxx。如果想和我聊天,那就大声地说"小小冰真漂亮

    (回复"小小冰再见/小小冰晚安/小小冰下次聊"可结束此次聊天。)""""

    return text

    elif Fromuser in groups:

    if msg.isAt:

    if "新年" in msg["Content"]:

    return "新年快乐,祝您身体健康,万事胜意。"

    elif Fromuser not in FriendList and msg["Content"] == "小小冰真漂亮":

    FriendList.append(Fromuser)

    return "通信建立成功"

    elif Fromuser in FriendList:

    if msg["Content"] in ["小小冰再见", "小小冰晚安", "小小冰下次聊"]:

    FriendList.remove(Fromuser)

    return "再见,和您聊天十分开心,希望您今天过得愉快!"

    else:

    FriendList.append(Fromuser)

    itchat.send(msg["Content"], toUserName=AI)

    else:

    text = """Mr.D先生现在不在,我是助手AI,有要事请拨打号码:xxxxxxxxxxx。如果想和我聊天,那就大声地说"小小冰真漂亮

    (回复"小小冰再见/小小冰晚安/小小冰下次聊"可结束此次聊天。)""""

    return text

    elif msg["Text"] == "小小冰真漂亮":

    FriendList.append(Fromuser)

    return "通信建立成功"

    elif Fromuser in FriendList:

    if msg["Text"] in ["小小冰再见", "小小冰晚安", "小小冰下次聊"]:

    FriendList.clear()

    return "再见,和您聊天十分开心,希望您今天过得愉快!"

    elif "新年" in msg["Text"]:

    return "新年快乐,祝您身体健康,万事胜意。"

    else:

    FriendList.append(Fromuser)

    itchat.send(msg["Text"], toUserName=AI)

    # 如果是自己发送消息,则清空列表

    elif Fromuser == user:

    FriendList.clear()

    # 其他公众号信息,就通知一声给微信文件助手

    else:

    itchat.send("公众号信息", toUserName="filehelper")

    @itchat.msg_register([itcontent.PICTURE, itcontent.RECORDING, itcontent.VIDEO, itcontent.MAP], isFriendChat=True,

    isGroupChat=True, isMpChat=True)

    def return_text(msg):

    text = "我不具备识别语音与图片等功能,请说普通话。"

    return text

    itchat.run()

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 本文是使用Python的itchat模块进行微信私聊消息以及群消息的自动回复功能,必须在自己的微信中添加微信号xiaoice-ms(微软的微信机器人)才能实现,直接复制代码运行之后扫一扫二维码即可,经过测试,该程序能够保持...

    本文是使用Python的itchat模块进行微信私聊消息以及群消息的自动回复功能,必须在自己的微信中添加微信号xiaoice-ms(微软的微信机器人)才能实现,直接复制代码运行之后扫一扫二维码即可,经过测试,该程序能够保持几小时的时间。

    实现原理,将别人发送给你的消息转发给AI小冰,然后再将AI的回复转回给那个人。

    群消息也是如此,此外还添加了新年问候语,是否与他人进行AI聊天等功能。不过只能实现文本消息以及微信自带表情的转发,不能转发表情、语音等。

    # -*-coding:utf-8-*-

    import itchat

    import itchat.content as itcontent

    # 登录网页微信,hotReload=True 能让登录时间加长

    itchat.auto_login(hotReload=True)

    # 记录公众号机器人小冰的UserName

    mps = itchat.search_mps(name='小冰')

    AI = mps[0]['UserName']

    # print(AI)

    # 记录自己的UserName,不然发送消息会发两遍

    username = itchat.get_friends()

    user = username[0]['UserName']

    # print(username)

    # 记录好友列表里好友的 UserName

    friendsname = [friend['UserName'] for friend in username if friend['UserName'] != user]

    # print(friendsname)

    groupname = itchat.get_chatrooms()

    groups = [group['UserName'] for group in groupname]

    # 这个说来话长~~,有兴趣的可以去上网查查

    @itchat.msg_register(itcontent.TEXT, isFriendChat=True, isMpChat=True, isGroupChat=True)

    def simple_reply(msg, FriendList=[]):

    Fromuser = msg['FromUserName']

    # 如果是AI而且列表不为空,就将AI发给自己的消息转发给发送消息者

    if msg['FromUserName'] == AI and FriendList:

    # print(msg['FromUserName'])

    itchat.send(msg['Text'], toUserName=FriendList[-1])

    elif Fromuser in friendsname:

    if '新年' in msg['Text']:

    return '新年快乐,祝您身体健康,万事胜意。'

    # 记录发送消息者入FriendList中

    elif Fromuser not in FriendList and msg['Text'] == '小小冰真漂亮':

    FriendList.append(Fromuser)

    return '通信建立成功'

    # 第一次发送消息过来,回复以下内容

    elif Fromuser in FriendList:

    if msg['Text'] in ['小小冰再见', '小小冰晚安', '小小冰下次聊']:

    FriendList.remove(Fromuser)

    return '再见,和您聊天十分开心,希望您今天过得愉快!'

    else:

    FriendList.append(Fromuser)

    itchat.send(msg['Text'], toUserName=AI)

    else:

    text = '''Mr.D先生现在不在,我是助手AI,有要事请拨打号码:xxxxxxxxxxx。如果想和我聊天,那就大声地说"小小冰真漂亮

    (回复"小小冰再见/小小冰晚安/小小冰下次聊'可结束此次聊天。)"'''

    return text

    elif Fromuser in groups:

    if msg.isAt:

    if '新年' in msg['Content']:

    return '新年快乐,祝您身体健康,万事胜意。'

    elif Fromuser not in FriendList and msg['Content'] == '小小冰真漂亮':

    FriendList.append(Fromuser)

    return '通信建立成功'

    elif Fromuser in FriendList:

    if msg['Content'] in ['小小冰再见', '小小冰晚安', '小小冰下次聊']:

    FriendList.remove(Fromuser)

    return '再见,和您聊天十分开心,希望您今天过得愉快!'

    else:

    FriendList.append(Fromuser)

    itchat.send(msg['Content'], toUserName=AI)

    else:

    text = '''Mr.D先生现在不在,我是助手AI,有要事请拨打号码:xxxxxxxxxxx。如果想和我聊天,那就大声地说"小小冰真漂亮

    (回复"小小冰再见/小小冰晚安/小小冰下次聊'可结束此次聊天。)"'''

    return text

    elif msg['Text'] == '小小冰真漂亮':

    FriendList.append(Fromuser)

    return '通信建立成功'

    elif Fromuser in FriendList:

    if msg['Text'] in ['小小冰再见', '小小冰晚安', '小小冰下次聊']:

    FriendList.clear()

    return '再见,和您聊天十分开心,希望您今天过得愉快!'

    elif '新年' in msg['Text']:

    return '新年快乐,祝您身体健康,万事胜意。'

    else:

    FriendList.append(Fromuser)

    itchat.send(msg['Text'], toUserName=AI)

    # 如果是自己发送消息,则清空列表

    elif Fromuser == user:

    FriendList.clear()

    # 其他公众号信息,就通知一声给微信文件助手

    else:

    itchat.send('公众号信息', toUserName='filehelper')

    @itchat.msg_register([itcontent.PICTURE, itcontent.RECORDING, itcontent.VIDEO, itcontent.MAP], isFriendChat=True,

    isGroupChat=True, isMpChat=True)

    def return_text(msg):

    text = '我不具备识别语音与图片等功能,请说普通话。'

    return text

    itchat.run()

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 通过读取表格的方式解决图灵机器人API接口调用的限制的问题(当然如果你是土豪直接购买图灵机器人的会员,请忽略这篇文档),新增图片回复、新增关注自动回复的功能。...微信公众号自动回复机器人 ...
  • 一、实验目的 1、掌握微信PHP机器人自动回复; 2、定义自己的回复内容。 二、实验内容 1、微信后台PHP接收用户输入,实现自己的回复内容。 2、微信后台PHP调用机器人接口,实现机器人自动回复
  • 托管机器人:用Python写一个机器人,自动回复别人说话 实现过程: 1.首先要申请一个可以说话的机器人.机器人网站http://www.tuling123.com 注册一个账号,然后登陆,创建一个机器人: 2.写一段连接机器人程序....
  • # coding=utf8 import requests import itchat KEY = '8edce3ce905a4c1dbb965e6b35c...先下载安装itchat和requests两个包,运行程序之后,手机扫码,然后就可以了,当有人给你发消息的时候,就会自动回复了。  
  • 本教程的作用零基础手把手教你打造一款微信自动回复机器人,零基础!操作流程:第一步:安装python环境,由于官网处于半墙状态,下载python开发包可能比较慢,这里我先下载好了,给出百度云下载地址,(链接:...
  • 30行代码实现微信自动回复机器人

    千次阅读 2019-01-29 08:37:55
    30行代码实现微信自动回复机器人 一、写在前面 今天下午又学到了itchat另一种有趣的玩法---微信自动回复机器人程序很简单仅仅三十行代码左右,实现了机器人自动与你的微信好友聊天,下面是我的机器人笼包跟自己...
  • PC端微信 机器人智能自动回复实现 全攻略

    千次阅读 热门讨论 2020-07-29 11:35:54
    PC端微信 机器人智能自动回复实现 全攻略环境介绍WechatPCAPI百度UNIT实现代码结语 环境介绍 该自动智能回复机器人基于python编写,笔者使用的版本是python3.7。 微信的信息捕捉发送部分采用了WechatPCAPI免费版。 ...
  • 利用闲置微信和极的电脑性能开启24小时无人轮值返利机器人 购物只需要发送链接给机器人机器人能马上给你回复优惠价格及链接 功能实现 微信机器人 这个模块在这里可以看到最新的代码微信机器人 [x] ...
  • 微信小程序实现客服默认自动回复功能

    万次阅读 热门讨论 2018-03-22 13:42:19
    微信小程序实现客服默认自动回复功能 程序可通过以下两种方式下发客服消息:1、调用发送客服消息接口;2、使用公众平台网页版客服工具;这里主要讲第1种的做法。 1、小程序管理员的后台配置 登录小程序,在...
  • 机器人自动回复,输入转人工接入人工(可培训) 支持发送文本和图片消息 界面开发接入配置(不再建议使用) 拷贝整个chat文件夹到您的项目pages/下 配置app.json,添加chat页面: "pages":[ "pages/chat/chat" ...
  • 然后我结合我之前做的微信自动回复机器人的经历,我首先就想到了图灵机器人。是不是可以把图灵机器人和微信公众号进行连接呢?于是我开始查看 图灵机器人的接口文档 微信公众号 发现其实只要我们拥有一个公网的web...
  • 微信公众号接入图灵机器人

    千次阅读 2018-07-11 15:06:01
    这个步骤和申请一个小程序了类似,首先进入微信公众平台进行注册,关键是注册的时候是选择订阅号,还是服务号,我觉的如果你是自己做着玩的,就搞个订阅号,订阅号免费,并且每天能群发一条图文,很好的。...
  • 今日推荐加微信(cxydev)备注:CSDN,加入免积分下载群备注:加群,你加入程序员吹水群机器人自动邀请的本文来源于Ahab杂货铺授权发布 ...
  • 这次的实例做做成可在任意电脑运行的微信自动回复机器人exe.文件。二、完成这个应用我们需要装一些库,,itchat;这个东东不出意外直接pip install itchat 就行了pyinstaller;这个库是用来将你的.py文件打包成exe...
  • 一 简单介绍wxpy基于itchat,使用了 Web 微信的通讯协议,,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展。实现了微信登录、收发消息、搜索好友、数据统计等功能。安装:wxpy 支持 Python 3.4-3.6,...
  • “傻瓜式”微信自动回复机器人配置教程 首先下载Python和Pip 到官网上去下源文件Python官网下载,Pip下载地址 这里建议Pip不要直接在这下,后面会有提到。 我下的是Python 2.7.8,Python 3可能和这个版本有点...
  • 1.前些天学习 Python, 看到一个 微信机器人的示例, 尝试了一下, 用了 近一个小时 实现, 共19行代码(抄的),  主要时间要在 安装 扩展以及运行环境上. 2. 作为 一个PHPer, PHP必须是世界上最好的语言, 应该能实现...
  • 简单粗暴,分享一种有趣的玩法---微信自动回复机器人。   程序很简单仅仅三十行代码左右,实现了机器人自动与你的微信好友聊天,下面是我的机器人笼包跟自己微信好友聊天的截图。   二、程序介绍 欢迎...
  • 前介 现如今最常用的社交工具是什么呢?必然是 微信 ,不得不说现在的微信不在简简单单是一个社交程序,它已经和我们生活紧密相关了。...我们要用程序的去维护我们的 娇妻因此我要开发一款自动回复女朋友消息的微...
  • 2、将下面的代码保存成py文件,在环境中或者Pycharm中运行该文件,会弹出QT二维码,用微信扫码会在后台登陆网页版微信,只要不关闭程序,那么当有人给你发消息的时候,就会自动回复了 # 代码转自:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,189
精华内容 875
关键字:

微信小程序自动回复机器人

微信小程序 订阅