如何在您的不和谐机器人被激活之前使其信息“记住”?

时间:2020-11-05 11:40:41

标签: discord.py

我制作了一个discord机器人,该机器人将特定味精的ID保存在JSON文件中,当有人对味精做出反应时,他会发回一条消息。
我的问题是,当我执行某项操作将关闭Bot一段时间(重新启动,更新,更改主机等)后,该Bot会“忘记”再次激活该Bot之前发出的所有消息。

有没有办法让机器人记住他被关闭之前发生的所有消息?
(我尝试了channel.history循环,该漫游器确实找到了他先前发出的消息(我测试了ID是否相同)
但是在我再次尝试对消息做出反应之后,该机器人仍然不知道已经做出了反应,因为该消息是在他被打开之前发出的。

旁注:
有一种解决方法,您可以做到这一点,而不是记住消息ID,而需要记住已发送味精的通道ID。
因此,找到上一条消息后,可以将其删除并重新创建一条消息。
关键是,我想知道是否有一种更简单的方法可以执行此操作,或者是否可以“记住”以前的消息。

1 个答案:

答案 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()