Загрузка...

Как перечислить всех юзеров сервера с помощью Discord.Net ? [Вопрос]

Тема в разделе C# создана пользователем muhtarstudio 4 окт 2023. 138 просмотров

Загрузка...
  1. muhtarstudio
    muhtarstudio Автор темы 4 окт 2023 5 20 авг 2022
    У меня постоянно выдает выдает ошибку:

    Код
    Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
    at SnakeManager.Program.Main() in C:\Users\zmeyskiy\source\repos\SnakeManager\SnakeManager\Program.cs:line 25
    at SnakeManager.Program.<Main>()
    Мой код:

    CSHARP
    SocketGuild guild = Discord.client.GetGuild(id);

    foreach (SocketGuildUser user in guild.Users)
    {
    if (!Directory.Exists("C:\\SnakeManager\\users\\" + user.Id))
    {
    Directory.CreateDirectory("C:\\SnakeManager\\users\\" + user.Id);
    }
    }
    Также я пробовал уже много вариантов, но каждый из них выдает одну и ту же ошибку. Надеюсь на вашу помощь. (Ошибка в строке с перечислением, тоесть foreach)
     
    4 окт 2023 Изменено
  2. r3xq1
    Ну и что сложного?
    Смотри какие есть данные в user по мимо Id.
    Закомментируй часть кода

    CSHARP
    if (!Directory.Exists("C:\\SnakeManager\\users\\" + user.Id))
    {
    Directory.CreateDirectory("C:\\SnakeManager\\users\\" + user.Id);
    }
    И посмотри какие вообще есть данные от user.
    Try-Catch добавь и смотри какие будут ошибки тоже
     
    1. muhtarstudio Автор темы
      r3xq1, рофл ? оно указывает на строку: foreach (SocketGuildUser user in guild.Users)
    2. r3xq1
      muhtarstudio, выкладывай весь код, то что ты скинул это ерунда.
      Ты можешь не правильно передавать id от туда и не находит сервер и прочее.
    3. muhtarstudio Автор темы
      r3xq1, я засунул в трай катч, и ошибка там одна. после перевода я получил: "В экземпляре объекта не задана ссылка на объект.", но какой нахуй обьект ? как мне это решать
  3. r3xq1
    Банальный ответ от GPT, смотри и исправляй.
    CSHARP
    using Discord;
    using Discord.WebSocket;
    using System;
    using System.IO;
    using System.Threading.Tasks;

    class Program
    {
    private static DiscordSocketClient _client;

    static async Task Main(string[] args)
    {
    _client = new DiscordSocketClient();

    // Здесь добавьте событие Ready, чтобы бот подключился к серверу
    _client.Ready += OnReady;

    // Здесь добавьте ваш токен бота
    string token = "YOUR_BOT_TOKEN";

    await _client.LoginAsync(TokenType.Bot, token);
    await _client.StartAsync();

    // Ждем, пока бот не завершит выполнение
    await Task.Delay(-1);
    }

    private static async Task OnReady()
    {
    ulong guildId = YOUR_GUILD_ID; // Замените YOUR_GUILD_ID на ID сервера

    var guild = _client.GetGuild(guildId);

    foreach (var user in guild.Users)
    {
    string userFolderPath = $"C:\\SnakeManager\\users\\{user.Id}";

    if (!Directory.Exists(userFolderPath))
    {
    Directory.CreateDirectory(userFolderPath);
    Console.WriteLine($"Создана папка для пользователя {user.Username}: {userFolderPath}");
    }
    }
    }
    }
     
    1. muhtarstudio Автор темы
      r3xq1, щас покажу свой
    2. muhtarstudio Автор темы
      r3xq1,
      CSHARP
      using Discord.WebSocket;

      namespace SnakeManager
      {
      class Program
      {
      public static async Task Main()
      {
      if (!Directory.Exists("C:\\SnakeManager"))
      {
      Directory.CreateDirectory("C:\\SnakeManager");
      }

      if (!Directory.Exists("C:\\SnakeManager\\users"))
      {
      Directory.CreateDirectory("C:\\SnakeManager\\users");
      }

      await Discord.initialize("токен");
      await Discord.enable();

      try
      {
      SocketGuild guild = Discord.client.GetGuild(айди);

      foreach (SocketGuildUser? user in guild.Users)
      {
      if (!Directory.Exists("C:\\SnakeManager\\users\\" + user.Id))
      {
      Directory.CreateDirectory("C:\\SnakeManager\\users\\" + user.Id);
      }
      }
      }
      catch (Exception e)
      {
      Console.WriteLine(e.Message);
      }

      Console.ReadKey();
      }
      }
      }
      CSHARP
      using Discord.WebSocket;
      using Discord;

      namespace SnakeManager
      {
      class Discord
      {
      public static DiscordSocketClient client;
      public static SocketTextChannel channel;
      public static async Task initialize(string token)
      {
      client = new DiscordSocketClient();
      await client.LoginAsync(TokenType.Bot, token);
      }
      public static async Task enable()
      {
      await client.StartAsync();
      }

      public static async Task disable()
      {
      await client.StopAsync();
      await client.DisposeAsync();
      }
      public static async Task sendMessage(string id, string message)
      {
      channel = (SocketTextChannel) client.GetChannel(ulong.Parse(id));
      await channel.SendMessageAsync(message);
      }
      public static async Task sendFile(string id, string path)
      {
      channel = (SocketTextChannel) client.GetChannel(ulong.Parse(id));
      await channel.SendFileAsync(path);
      }
      }
      }
    3. muhtarstudio Автор темы
      r3xq1, также Id сервера у меня правильный, я его копировал с дискорда. также я тестил другие сервера, и на них тоже самое
Top