【问题标题】:Can't send a set of messages with time.sleep() in balebot无法在 balebot 中使用 time.sleep() 发送一组消息
【发布时间】:2018-11-02 12:43:32
【问题描述】:

我需要使用balebot python SDK 向一组bale 用户发送短信。我想直接发送他们,不想等待他们开始与我的机器人对话。我有他们的 user_id 和 access_hash。我已经尝试过这段代码,但遇到了“HIT_LIMIT”错误。

BotErrorResponse { _id: '1001', _body: { 代码: 403, 标签: 'HIT_LIMIT',数据:{},retryIn:空},代码:403,标签: 'HIT_LIMIT',数据:{},重试:null }

我使用 for 循环通过 time.sleep() 再次发送它们,但是当我使用此 sendMessage 函数时不起作用!

代码

def success(response, user_data):
print("success : ", response)
print(user_data)


def failure(response, user_data):
print("failure : ", response)
print(user_data)


def send_message(bot, update):
for peer in save_peers:
    bot.send_message(TextMessage("Text"), Peer(peer_type=PeerType.user, peer_id=peer["id"],
    access_hash=peer["accessHash"]),
    success_callback=success, failure_callback=failure)
    time.sleep(2)

【问题讨论】:

    标签: python-3.x bots bale-messenger


    【解决方案1】:

    这是因为 asyncio 和 time.sleep() 不匹配。如果我是你,我会使用 asyncio.get_event_loop() 而不是 for loop 和 time.sleep()。 这是一个示例代码:

    save_peers = [{"$type": "User", "id": 128521332, "accessHash": "9256310829016723727"},
                  {"$type": "User", "id": 928571821, "accessHash": "4540300829906797423"}
                  ]
    limit_message = 50000
    bot_send_delay = 2
    my_send_loop = asyncio.get_event_loop()
    my_send_loop2 = asyncio.get_event_loop()
    
    
    def send_message(bot, how_many, message_number, loop):
        print("sending for ", message_number, " st time")
    
        my_send_loop2.call_soon(send_message2, bot, len(save_peers), 0, my_send_loop2)
    
        if message_number < how_many:
            loop.call_later(bot_send_delay, send_message, bot, how_many, message_number + 1, loop)
        else:
            print("index finished")
    
    def send_message2(bot, top, down, loop):
        print("sending for ", down, " st time")
        if down < top:
            bot.send_message(TextMessage("TEXT"), Peer(peer_type=PeerType.user, peer_id=save_peers[down]["id"],
                                                       access_hash=save_peers[down]["accessHash"]),
                             success_callback=success, failure_callback=failure)
            loop.call_later(bot_send_delay, send_message2, bot, top, down + 1, loop)
    
    
    my_send_loop.call_soon(send_message, bot, limit_message, 0, my_send_loop)
    
    updater.run()
    

    【讨论】:

      猜你喜欢
      • 2018-10-23
      • 2018-12-03
      • 1970-01-01
      • 2014-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多