Код позиционирования — это вещь, и я думал, что у меня есть приличная ручка

Перемещение фрагментов кода из одной области в другую приводит к непредвиденным последствиям. И я изо всех сил пытаюсь понять, почему.

Одна из функций, которую я хочу встроить в своего бота, — это автоматическое назначение роли на моем сервере Discord любому, кто приобретет доступ к одной из моих фитнес-программ. У Patreon есть бот для разногласий, который очень хорошо с этим справляется — вы настраиваете все роли в соответствии с предлагаемыми вами уровнями, приглашаете бота на свой сервер и вуаля! Когда кто-то подписывается на уровень и разрешает разногласия, бот Patreon переносит пользователя на ваш сервер и назначает ему соответствующую роль. Довольно мощная вещь, которую я хотел бы эмулировать для своей собственной системы.

Однако, будучи полным новичком в программировании, легкость, с которой это может быть сделано, выше меня. Я много узнал о async/await, и у меня есть ряд ресурсов, готовых прочитать о веб-перехватчиках, когда придет время заняться этим, но в настоящее время я застрял на том, чтобы заставить своего бота сделать что-то такое простое, как проверить, если роль существует на моем сервере Discord до ее создания.

Конечно, до сегодняшнего дня я даже не заходил так далеко. Мне удалось написать команду, в которой мой бот будет выдавать ответ, когда его об этом попросят, и на основе заданных аргументов команды он будет отвечать определенными вещами. По сути, если вы передадите в качестве аргумента пользователя, который не является членом сервера, мой бот нетерпеливо спросит вас, о ком вы, черт возьми, говорите. И если вы попытаетесь передать в качестве аргумента сумму в долларах, которая не является числом, мой бот будет просто насмехаться над вами. Итак, это нормально. Это работает.

Что должно произойти, так это то, что если вы передаете пользователя, который является членом сервера, и правильную сумму в долларах в качестве аргументов этой команды, мой бот должен ответить подтверждением, а затем эти аргументы должны быть переданы в функция, которая делает следующее:

  1. Проверяет, существует ли роль с определенным именем, и если нет, создает ее.
  2. Проверяет, превышает ли сумма в долларах пороговое значение, и если да, то добавляет данного пользователя в указанную роль.
  3. Регистрирует подтверждение назначения роли на консоль.

Это то, что должно произойти. Это не то, что происходит. В настоящее время роль создается независимо от того, существует она уже или нет, и пользователь не добавляется в роль.

Я скажу, что это улучшение по сравнению с тем, что было несколько дней назад. Несколько дней назад роль даже не создавалась. У меня была основная команда в одном файле, а функция в отдельном файле, и я пытался получить команду для вызова функции, и мне что-то не хватало в процессе. я думал просто

let { updateRole } = require('./update-role.js');

в верхней части командного файла сделает это, но НЕТ. Что-то просто не подключалось. В итоге я переместил функцию в индексный файл, и теперь я получал от нее кое-что. Просто это было не все, чего я ожидал.

Затем я решил просто переместить функцию непосредственно в командный файл. Сначала я хотел избежать этого, так как чувствовал, что командный файл в конечном итоге станет громоздким, когда я добавлю больше фитнес-программ в свой каталог, но принял решение просто работать с ним настолько организованно и подробно, насколько это необходимо, когда придет время. Произошло интересное: у меня по-прежнему только создавалась роль, независимо от того, существовала она уже или нет, но теперь я не получал подтверждения в консоли, что она создана, тогда как когда функция была в индексном файле, я был.

🤔

Хорошо, и что теперь? Почему один и тот же фрагмент кода может работать одним способом в одном месте и одним способом в другом? Единственные переменные, от которых я зависим, — это те, которые передаются в качестве аргументов, что, по-видимому, происходит одинаково в любой ситуации, но с разными результатами.

Мне придется разбивать его шаг за шагом и регистрировать каждый шаг в консоли, чтобы увидеть, где я сбиваюсь с пути. Преимущество этого процесса в том, что я смогу разобраться и лучше понять, как получить определенные наборы информации от Discord для выполнения нужных мне функций.

78/100