gpt4 book ai didi

Python 脚本不起作用,但也不给出错误

转载 作者:行者123 更新时间:2023-12-01 08:57:37 26 4
gpt4 key购买 nike

import json, requests, sys
sys.setrecursionlimit(3000)
print ("Delete all messages from specific channel")

username1 = "123"
username2 = "123"
auth_token = "123"
channel_id = "123"
delete_from_all_users = "False"

def get_all_messages(auth, id, last="", prev=[]):
if not last:
messages = json.loads(requests.get("http://canary.discordapp.com/api/v6/channels/" + id + "/messages", headers={"authorization": auth}, params={"limit": 100}).content)
else:
messages = json.loads(requests.get("http://canary.discordapp.com/api/v6/channels/" + id + "/messages", headers={"authorization": auth}, params={"before" : last, "limit" : 100}).content)

prev = prev + messages

if len(messages) < 100:
print ("Got to end of channel at " + str(len(prev)) + " messages")
return prev
else:
oldest = sorted(messages, key=lambda x: x["timestamp"], reverse=True)[-1]
return get_all_messages(auth, id, last=oldest["id"], prev=prev)

def delete_all(auth, id, user1, user2, messages):
print ("Trying to delete all messages in " + id + " from username " + user1)
for message in messages:
# print(message["author"]["username"])
if (message["author"]["username"] == user1):
requests.delete("http://canary.discordapp.com/api/v6/channels/" + id + "/messages/" + message["id"],headers={"authorization": auth})
print ("All messages were deleted")

delete_all(auth_token, channel_id, username1, username2, get_all_messages(auth_token, channel_id))

这是我从网上得到的脚本,“123”部分原本是用一些私有(private)信息替换的。我修复了一些问题以使该脚本正常工作,我解决了所有错误,但脚本本身一般停止工作。我通过添加“sys.setrecursionlimit(3000)”修复了递归错误,并通过安装 python 3.7 64 位(我之前有 32 位)修复了内存错误。现在我运行脚本,几个小时后,它返回没有错误,并且不执行任何操作。

最佳答案

嗯...这似乎是对递归的非常非常糟糕的使用。如果没有您尝试操作的数据的示例,就很难提供帮助,但我会将第一部分替换为以下内容:

def get_all_messages(auth, id, limit=100):
messages = json.loads(requests.get("http://canary.discordapp.com/api/v6/channels/" + str(id) + "/messages", headers={"authorization": auth}, params={"limit": limit}).content)
last = last_message_id(messages)
n = len(messages)
while n == limit:
new_messages = json.loads(requests.get("http://canary.discordapp.com/api/v6/channels/" + str(id) + "/messages", headers={"authorization": auth}, params={"before" : last, "limit" : limit}).content)
last = last_message_id(new_messages)
n = len(new_messages)
messages.extend(new_messages)
print("Retrieved {n} messages [Total: {tot}]".format(n=n, tot=len(messages)))
return messages

def last_message_id(mes):
return sorted(mes, key=lambda x: x["timestamp"], reverse=True)[-1]["id"]

同样,如果没有您想要操作的数据的示例,就很难知道编写此数据的最佳方法是什么。

关于Python 脚本不起作用,但也不给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52692700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com