Python 删除处于空闲状态的邮件

Python 删除处于空闲状态的邮件,python,slack-api,Python,Slack Api,Sooo,我对编程比较陌生,正在尝试学习如何使用API。因为我经常使用Slack,所以我想我应该首先构建一个Slack机器人来进行调节。在大多数情况下,除了我试图删除邮件外,其他一切都正常工作。API返回消息,表示即使消息在通道中也找不到它(slack API使用时间戳来定位所述消息)。时间戳匹配,但声明消息不存在。这是我的密码: def __init__(self, token): self.token = token self.users = {} self.chan

Sooo,我对编程比较陌生,正在尝试学习如何使用API。因为我经常使用Slack,所以我想我应该首先构建一个Slack机器人来进行调节。在大多数情况下,除了我试图删除邮件外,其他一切都正常工作。API返回消息,表示即使消息在通道中也找不到它(slack API使用时间戳来定位所述消息)。时间戳匹配,但声明消息不存在。这是我的密码:

def __init__(self, token):
    self.token = token
    self.users = {}
    self.channels = {}
    self.slack = SlackClient(self.token)
    self.as_user = True

def connect(self):
    if self.slack.rtm_connect():
        self.post_message('#test', "*AUTOMOD* _v0.1_")

        while True:
            # print(self.slack.rtm_read())
            self.parse_data(self.slack.rtm_read())
            time.sleep(1)

def parse_data(self, payload):
    if payload:
        if payload[0]['type'] == 'message':
            print(("user: {} message: {} channel: {}").format(payload[0]['user'], payload[0]['text'], payload[0]['channel']))
            self.handle_message(payload[0])

def handle_message(self, data):
    # these users can post whatever they want.
    WHITELISTED = ["U4DU2TS2F", "U3VSRJJD8", "U3WLZUTQE", "U3W1Q2ULT"]

    # get userid
    sent_from = (data['user'])

    # ignore whitelisted
    if sent_from in WHITELISTED:
        return

    # if message was sent from someone not in WHITELISTED, delete it
    else:
        print(("\n\ntimestamp of message: {}").format(data['ts']))
        self.delete_message(data['channel'], data['ts'])
        self.post_message(data['channel'], "```" + random.choice(dongers) + "```")


def delete_message(self, channel, timestamp):
    print(("deleting message in channel '{}'...").format(channel))
    print("timestamp check (just to make sure): ", timestamp)
    deleted = self.slack.api_call("chat.delete",
                        channel=channel,
                        timestamp=timestamp,
                        as_user=self.as_user
                    )

    if deleted.get('ok'):
        print("\nsuccessfully deleted.\n")
    else:
        print(("\ncouldn't delete message: {}\n").format(deleted['error']))
输出

对可能发生的事情有什么想法吗?下面是上下文的方法

编辑:


由于@pvg建议使用“最小、完整和可验证的示例”,我将项目中的整个代码放在了一个列表中。

一个问题可能是,当API方法采用
ts
参数时,您似乎正在将
时间戳
参数传递给
chat.delete
。()

你应该试着把它写成一篇文章。例如,当调用您的
handle\u message
方法时,消息是否已发布并不十分清楚,但是它被调用了。@pvg woah,很好的文档。你们认为把它全部写在一个要点上会更好吗?不,这是“最小”的观点。另外,代码实际上必须在您的问题中。因此,optimal question有一个自包含的代码片段,显示您遇到的问题,其他人可以尝试。不总是可能的,但在这种情况下可能是这样。另一个积极的副作用是:编写其中一个问题通常可以让你自己解决问题。@pvg我明白你的意思,但我在原始问题中发布的代码是罪魁祸首,也是代码量最少的部分(这是我的机器人中唯一无法工作的部分)。不管怎样,我已经把你的链接添加到书签里了,因为它似乎是一个很好的资源!它不是独立的。例如,无法从问题中的代码判断您实际上是如何接收消息的。
timestamp of message:                    1488822718.000040
deleting message in channel:             'G4DGYCW2X'
timestamp check (just to make sure...):  1488822718.000040

couldn't delete message: message_not_found