簡體   English   中英

如何在機器人消息上添加表情符號並能夠“投票”?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM