【问题标题】:Discord.NET Kick CommandDiscord.NET 踢命令
【发布时间】:2019-05-13 20:47:32
【问题描述】:

所以我正在为一个计算机科学项目开发​​一个机器人,但我的 kick 命令不起作用。我试过注释掉更新 SQL 和 ReplyAsync 行,但它不会踢用户。我是否为用户使用了错误的数据类型?

public class Kick : ModuleBase<SocketCommandContext>
    {
        OleDbConnection con;
        OleDbDataAdapter da;

        [Command("kick")]
        [RequireUserPermission(GuildPermission.KickMembers)]
        [RequireBotPermission(GuildPermission.KickMembers)]
        public async Task KickUser(IGuildUser user, string reason = "No reason provided")
        {
            con = new OleDbConnection();
            con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=BotDB.accdb";
            da = new OleDbDataAdapter();

            con.Open();
            da.InsertCommand = new OleDbCommand($"UPDATE UserData SET NumKick = NumKick + 1 WHERE UserID = '{Convert.ToString(user.Id)}'");
            da.InsertCommand.ExecuteNonQuery();
            con.Close();

            await ReplyAsync($"{user.Nickname} was kicked from the server for '{reason}'");
            await user.KickAsync(reason);
        }
    }

【问题讨论】:

  • 您是收到错误消息,还是什么都没发生?
  • 没有任何错误,它什么也不做。控制台日志也没有任何错误
  • 您的命令要么未执行,要么您的命令引发错误。您可以使用 try catch。 Discord.Net 有一个错误处理,这就是为什么你什么都看不到的原因。

标签: c# sql ms-access discord discord.net


【解决方案1】:

我设法修复它,由于字符串原因,我不得不删除默认值,并且在 InsertCommand 区域中,我忘记在 SQL 之后声明 OleDbConnection。

【讨论】:

    猜你喜欢
    • 2021-01-15
    • 2021-06-01
    • 1970-01-01
    • 2021-07-27
    • 2021-11-13
    • 2019-10-04
    • 2021-07-07
    • 2020-09-16
    • 2020-12-31
    相关资源
    最近更新 更多