[英]How to add emojis on a bot message and be able to “vote”?
我做了一個 Discord Bot 的 MEME 命令,它發布了來自 phpMyAdmin DB 的模因列表。 但它不是關於那個。 我想在那個機器人消息上添加特定的表情符號,人們可以按下這些表情符號並投票。
它是這樣發帖的:
這就是我想要做的:
[Command("meme")]
public async Task meme(CommandContext commandInfo, int id = -1, SocketUserMessage userMsg, string emoteName)
{
var description = "";
MySqlClient.Connect();
if (id == -1)
{
var query = "SELECT * FROM memes;";
var memeReader = MySqlClient.GetDataReader(query);
if (memeReader == null) return;
while (memeReader.Read())
{
var memeid = memeReader.GetUInt64("id");
var title = memeReader.GetString("title");
description += $"**{memeid}** {title}\n";
}
}
var memeEmbed = new DiscordEmbedBuilder()
{
Color = DiscordColor.Gold,
Title = "**The Meme of The Year**",
Description = description
};
var msg = await commandInfo.Channel.SendMessageAsync(embed: memeEmbed);
}
假設您使用的是 Discord.Net,您需要使用AddReactionAsync
方法對您自己的消息做出反應。
表情符號是 unicode 字符。 要使用它們,請將 utf 代碼(例如"\?\?"
)作為參數傳遞給 Emoji` 對象的構造函數。
await userMsg.AddReactionAsync(new Emoji("\U0001f643"));
Emote
是一種“ Emote
符號”,可以由服務器管理員/模組設置。
作為參數,您需要傳遞自定義表情字符串,例如"<:thonkang:282745590985523200>"
。
捕獲不存在的表情的安全包裝器可能看起來像這樣(取自文檔)。
public async Task ReactWithEmoteAsync(SocketUserMessage userMsg, string escapedEmote)
{
if (Emote.TryParse(escapedEmote, out var emote))
{
await userMsg.AddReactionAsync(emote);
}
}
https://docs.stillu.cc/guides/emoji/emoji.html
第二步,您需要聆聽用戶事件,當他們對您的帖子做出反應時。 這應該在單獨的事件處理程序中完成,因為您的投票可能會持續幾個小時/天。
這是一個關於如何實現事件處理程序的示例
然后您需要跟蹤反應並將其與匹配的數據庫條目相關聯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.