async def reply(basemsg, message, reply):
heads = {
"Content-Type":"application/json",
"Authorization":f"Bot {TOKEN}"
}
data = {
"content":message,
"message_reference": {
"message_id":basemsg.id
},
"allowed_mentions": {
"replied_user":reply
}
}
r = requests.post(f'https://discord.com/api/channels/{basemsg.channel.id}/messages', data=json.dumps(data), headers=heads)
if r.status_code!=200:
raise Exception(f'Gateway returned an error: \n{r.text}')
return False
return True
message_referenceの中で、message_idに返信先のメッセージIDを指定することで返信可能
@メンションを切るには、allowed_mentionsの中にreplied_user: False
を明示する
(デフォルトではOFFとリファレンスには書いてあったが、どうやらONになってるらしいので、こうする必要がある)
この関数の例では await reply(message, 'Hello', False)
とすると、受信したメッセージに@メンションOFF(False)で「Hello」と言う
Discord公式APIドキュメンテーション
https://discord.com/developers/docs/resources/channel#create-message
コルーチン内で
requests
を使うのであれば普通の関数にしてもいいと思うし、ボット内で使うのならaiohttp
を使うといいと思う。