discord.py 保存服务器的变量设置更改
Posted
技术标签:
【中文标题】discord.py 保存服务器的变量设置更改【英文标题】:discord.py save variable settings changes of server 【发布时间】:2021-05-30 04:40:04 【问题描述】:当有人将值更改为 heroku postgres 时,我如何保存每个服务器的 self.stn_hoist
值?
@commands.command()
@commands.has_permissions(administrator=True)
async def hoist(self, ctx, value):
embed=discord.Embed(color=0x850000)
embed.add_field(name="hoist", value=f'has been set to `value`.', inline=False)
if value.lower() == 'yes':
self.stn_hoist = True
await ctx.send(embed=embed)
elif value.lower() == 'no':
self.stn_hoist = False
await ctx.send(embed=embed)
else:
await ctx.send(embed=discord.Embed(color=0x850000).add_field(name="hoist", value=f'can not be set to `value`'))
【问题讨论】:
我将 heroku postgres 添加到 heroku 应用程序并将其连接到 bot.py 但我不知道如何创建数据库并保存变量更改 是否要将stn_hoist
保存为变量?
@Ceres 我想知道如何将每个服务器的设置(如stn_hoist
)保存在数据库中以及如何加载on_ready()
【参考方案1】:
我不建议对单个变量使用数据库。您可以为此使用 json 文件,但 heroku 有一个ephemeral file system,这意味着每当您的应用程序重新启动时都会重写 json 文件。你可以使用 heroku 的配置变量来存储这个变量。
import os
import requests
#getting the variable
hoist = os.environ['hoist']
# OR
request = requests.get('https://api.heroku.com/apps/YOUR-APP-NAME/config-vars', headers='Accept': 'application/vnd.heroku+json; version=3', "Authorization": "Bearer YOUR-AUTH-TOKEN")
if request.status_code == 200:
hoist = request.json()['hoist']
else:
print('something went wrong')
#updating the config variable
request = requests.patch('https://api.heroku.com/apps/YOUR-APP-NAME/config-vars', json.dumps("hoist": "1"), headers="Content-Type": "application/json", 'Accept': 'application/vnd.heroku+json; version=3', "Authorization": "Bearer YOUR-AUTH-TOKEN")
if request.status_code == 200:
hoist = request.json()['hoist']
else:
print('something went wrong')
您必须将YOUR-APP-NAME
替换为您的应用名称或ID,并将YOUR-AUTH-TOKEN
替换为您的身份验证令牌。
您必须在 heroku 仪表板或 CLI 中设置 config variable hoist
。
您可以获得API令牌here
参考资料:
API Docs accessing config var延伸阅读:
Use heroku api wrapper【讨论】:
以上是关于discord.py 保存服务器的变量设置更改的主要内容,如果未能解决你的问题,请参考以下文章
无法为每个服务器 discord.py 获取自定义管理员角色