当前位置: 首页 > 知识库问答 >
问题:

不和谐机器人[C#]不执行命令

皮安顺
2023-03-14

我开始写一个Discord机器人,但我已经设法遇到了一个问题。我只是写了他写的东西,做了一些小改动,不会对程序产生太大影响。我有两个类,主类只获取bot的令牌,然后使用

MyBot bot = MyBot(token)

下面是MyBot.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Discord;
using Discord.Commands;

namespace Coding_Bot
{
    class MyBot
    {
        DiscordClient discord;
        String botToken;

        public MyBot(String tempToken)
        {

            botToken = tempToken;
            discord = new DiscordClient(x =>
            {
                x.LogLevel = LogSeverity.Info;
                x.LogHandler = Log;
            });
            Console.WriteLine("[BOT] Connecting...");
            discord.ExecuteAndWait(async () =>
            {
                await discord.Connect(botToken, TokenType.Bot);
            });


            discord.UsingCommands(x =>
            {
                x.PrefixChar = '.';
                x.AllowMentionPrefix = true;
            });

            var commands = discord.GetService<CommandService>();

            commands.CreateCommand("info").Do(async (e) =>
            {
                Console.WriteLine("!info executed");
                await e.Channel.SendMessage("Coding Bot");
            });
        }

        private void Log(object sender, LogMessageEventArgs e)
        {
            Console.WriteLine("[BOT] " + e.Message);
        }
    }
}

它可以连接,机器人也可以在线。这是我的控制台中的输出:

[BOT] Connecting...
[BOT] Connected
[BOT] GUILD_AVAILABLE: BotTestServer

当我现在打字的时候。一般来说,什么都不会发生。控制台中没有,一般情况下也没有。我已经看过了,但它并没有解决我的问题

编辑:我知道我应该使用CommandHandler类,而不是将所有命令都放在那里。我以后不会这么做,但这只是为了测试。

共有2个答案

祁高格
2023-03-14

我知道这很愚蠢,但是你检查过机器人发布权限了吗?(这件事发生在我身上。)

云航
2023-03-14

我把你的代码复制到我的一个测试机器人上,做了一点修改,我的机器人能够连接,只是它没有响应命令
这些是我所改变的:

第一次改变

MyBot bot = new MyBot(token); //instead of MyBot bot = MyBot(token);

第二个变化:机器人没有响应命令

Console.WriteLine("[BOT] Connecting...");
            discord.ExecuteAndWait(async () =>
            {
                await discord.Connect(botToken, TokenType.Bot);
            });

上面的代码放错了地方,所以我把它移到了下面

commands.CreateCommand("info").Do(async (e) =>
        {
            Console.WriteLine("!info executed");
            await e.Channel.SendMessage("Coding Bot");
        });

其他详细信息:检查您的。NET框架版本,我在测试这个html" target="_blank">代码时使用了4.6.2,并且API不和谐。NET版本为0.9.6

如果问题仍然存在,您可以在此处寻求帮助:https://discord.gg/JBp6gSN

轻微的音符
也是最新版本的不和谐。NET最近发布了v1。0.0 . 它涉及从v1到v0的重大变化。9.6,使一切都基于异步运行。如果这个问题让你非常头痛,你可以通过使用Discord轻松摆脱这种情况。NETV1。

 类似资料:
  • 我已经创建了一个bot,它现在在我的discord服务器中,使用下面的代码。 我的问题是,一旦我在与bot不和谐的聊天中,我如何调用命令让bot运行代码,为用户列表收集csv?我不确定如何调用机器人,一旦它在聊天/服务器中获得列表。

  • 我们正在创建一个不和谐机器人。 问题是控制台中没有错误,但不和谐聊天也是空的。所以完全没有回应。你能帮我说说我的错误是什么以及如何解决这个问题吗 祝你一切顺利,尼克斯

  • 我使用repl。它让我的不和机器人。我使用Python并遵循本教程: https://www.youtube.com/watch?v=SPTfmiYiuok 这是我的代码:

  • 有人用say命令有完整的最新基本discord代码吗?或者任何愿意教我并指导我制作机器人的人。我很想为我的机器人做一个:'(

  • 当我在discord内部运行以下脚本(“cmd中的node musicbot.js”)和“!play ytlink”时,bot加入语音通道,并在控制台中记录命令和链接。然而,音乐并没有开始播放。我安装了ffmpeg、ytdl核心和discord。js。 有人能帮我吗?我不知道是哪一部分搞砸了。

  • 我试图在重写discord.py不和谐的自我机器人,它给了我这个错误: 这是我的代码: