小编Naz*_*zar的帖子

用户在Telegram Bot API中单击后如何隐藏ReplyKeyboardMarkup

我正在使用Node.js telegram-bot-api.

理念:

  1. 使用一个按钮显示自定义键盘 - "分享我的电话号码".
  2. 当用户单击此按钮时,应发送联系人并从屏幕上删除按钮.

这是我正在使用的代码:

bot.sendMessage({
    text: 'Please give us your phone number',
    reply_markup: JSON.stringify({
        keyboard: [
            [{
                text: 'Share my phone number',
                request_contact: true
            }]
        ],
        resize_keyboard: true,
        one_time_keyboard: true
    })
});
Run Code Online (Sandbox Code Playgroud)

问题:

  • 当用户点击"分享我的电话号码"按钮时,它会共享他的联系人,但即使在此之后按钮也可见.
  • 当我没有使用request_contact旗帜时,one_time_keyboard工作正常(使用后隐藏按钮),但即使在这种情况下它只是隐藏按钮,因此用户可以点击图标将其带回屏幕,这根本不是好事.

如果我在这里做错了,请告诉我.谢谢

javascript node.js telegram telegram-bot

8
推荐指数
2
解决办法
1万
查看次数

在更新时对几个字段进行Mongoose自定义验证

首先,没有帮助.

比方说,我们有一个用户模型:

const schema = new mongoose.Schema({
    active: { type: Boolean },
    avatar: { type: String }
});

const User = mongoose.model('User', schema);
Run Code Online (Sandbox Code Playgroud)

当我们更新它(设置一个头像):

// This should pass validation
User.update({ _id: id }, { $set: { avatar: 'user1.png' } });
Run Code Online (Sandbox Code Playgroud)

我们希望根据当前(或更改的)active属性值对其进行验证.

情况1

  • activefalse
  • 我们应该设置头像 - 它不应该通过验证

案例#2

  • activetrue
  • 我们应该能够设置头像 - 它应该通过验证

思路

  1. 使用自定义验证器
const schema = new mongoose.Schema({
    active: { type: Boolean },
    avatar: …
Run Code Online (Sandbox Code Playgroud)

javascript validation mongoose mongodb node.js

6
推荐指数
1
解决办法
1809
查看次数

在Sails控制器中执行操作之前

有没有办法在Sails控制器中定义的每个和所有操作之前执行操作/功能?类似于beforeCreate模型中的钩子.

例如,在我的DataController中,我有以下操作:

module.exports = {
  mockdata: function(req, res) {
    var criteria = {};

    // collect all params
    criteria = _.merge({}, req.params.all(), req.body);
    //...some more login with the criteria...
  },
  getDataForHost: function(req, res) {
    var criteria = {};

    // collect all params
    criteria = _.merge({}, req.params.all(), req.body);
    //...some more login with the criteria...
  }
};
Run Code Online (Sandbox Code Playgroud)

我可以做以下事情:

module.exports = {
  beforeAction: function(req, res, next) {
    var criteria = {};

    // collect all params
    criteria = _.merge({}, req.params.all(), req.body);
    // store …
Run Code Online (Sandbox Code Playgroud)

orm sails.js waterline

5
推荐指数
1
解决办法
1155
查看次数