我制作了一个discord机器人,该机器人将特定味精的ID保存在JSON文件中,当有人对味精做出反应时,他会发回一条消息。
我的问题是,当我执行某项操作将关闭Bot一段时间(重新启动,更新,更改主机等)后,该Bot会“忘记”再次激活该Bot之前发出的所有消息。>
有没有办法让机器人记住他被关闭之前发生的所有消息?
(我尝试了channel.history
循环,该漫游器确实找到了他先前发出的消息(我测试了ID是否相同)
但是在我再次尝试对消息做出反应之后,该机器人仍然不知道已经做出了反应,因为该消息是在他被打开之前发出的。
旁注:
有一种解决方法,您可以做到这一点,而不是记住消息ID,而需要记住已发送味精的通道ID。
因此,找到上一条消息后,可以将其删除并重新创建一条消息。
关键是,我想知道是否有一种更简单的方法可以执行此操作,或者是否可以“记住”以前的消息。
答案 0 :(得分:0)
所以我要做的是将消息保存到SQL数据库中,并在启动时恢复所有消息。
像这样:
# Start up (run this code first)
try:
with open(path, "x") as file: pass
except: pass
global conn, c
conn = sqlite3.connect(path)
c = conn.cursor()
c.execute("""CREATE TABLE IF NOT EXISTS Messages (
messages string NOT NULL
)""")
# Gets message history
c.execute("SELECT * FROM Messages")
history = c.fetchall()
除非您在接收消息时保存消息,否则这将无法工作,因此,一旦收到消息,请添加这些行,以便以后可以获取
# Saves message
c.execute("INSERT INTO messages VALUES (?)", (message,))
conn.commit()