Хочу сделать бота для Discord сервера

AiD__

Новичок
Пользователь
Фев 13, 2022
5
0
1
Недавно меня попросили сделать бота который бы публиковал на сервере дс изображения с редита, но по итогу возникают ошибки которые я не понимаю. До этого никогда не писал коды, поэтому не стоит меня булить, прошу. Рассчитываю на вашу помощь
1644766869032.png
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
добавляйте код через специальную кнопку (</>)

DISCORD_TOKEN не токен. Токен бота можно посмотреть в настройках бота, там где-то есть нужная кнопка
 

AiD__

Новичок
Пользователь
Фев 13, 2022
5
0
1
Discord_Token у меня указан в отдельном файле config, как оказалось я неправильно его указал, можете подробнее обьяснить пункт добавления через специальную кнопку
1644768080503.png

добавляйте код через специальную кнопку (</>)

DISCORD_TOKEN не токен. Токен бота можно посмотреть в настройках бота, там где-то есть нужная кнопка
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Discord_Token у меня указан в отдельном файле config, как оказалось я неправильно его указал, можете подробнее обьяснить пункт добавления через специальную кнопку
Посмотреть вложение 1634
Как вставлять код:
1644768624282.png
 

AiD__

Новичок
Пользователь
Фев 13, 2022
5
0
1
Очень благодарю вас за помощь, последний вопрос, как сделать так чтобы бот работал автоматически и не выключался при закрытии документа
Python:
import discord
import asyncpraw
import asyncio
import config

bot = discord.Client()
reddit = asyncpraw.Reddit(client_id=config.settings['CLIENT_ID'],
                     client_secret=config.settings['SECRET_CODE'],
                     user_agent='random_raddit_bot/0.0.1')
                    
artcommissions = []
TIMEOUT = 120
ID_CHANNEL = 942387219879063593
SUBREDDIT_NAME = 'artcommissions'
POST_LIMIT = 5

@bot.event
async def on_ready():
    channel = bot.get_channel(ID_CHANNEL)
    while True:
        await asyncio.sleep(TIMEOUT)
        artcommissions_submissions = await reddit.subreddit(SUBREDDIT_NAME)
        artcommissions_submissions = artcommissions_submissions.new(limit=POST_LIMIT)
        item = await artcommissions_submissions.__anext__()
        if item.title not in artcommissions:
            artcommissions.append(item.title)
            await channel.send(item.url)

bot.run(config.settings['DISCORD_TOKEN'])
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Либо запускать на сервере, либо запускать в фоне (либо свернуть консоль, либо поставить расширение .pyw и запустить (для Windows))
 

AiD__

Новичок
Пользователь
Фев 13, 2022
5
0
1
Либо запускать на сервере, либо запускать в фоне (либо свернуть консоль, либо поставить расширение .pyw и запустить (для Windows))
Есть ещё способи запуска? Я просто не всегда смогу его включать вручную, а мне надо чтобы он работал 24/7
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
1) надо где-то его запустить чтобы он работал, это либо твой компьютер, либо сервер
2) если бот на заказ, то обычно заливаешь на сервер, но это стоит денег (платит, очевидно, заказчик) если для себя, то можно на
Но там одного бота, и надо перезапуска ь иногда (на сколько я знаю)
 

AiD__

Новичок
Пользователь
Фев 13, 2022
5
0
1
1) надо где-то его запустить чтобы он работал, это либо твой компьютер, либо сервер
2) если бот на заказ, то обычно заливаешь на сервер, но это стоит денег (платит, очевидно, заказчик) если для себя, то можно на
Но там одного бота, и надо перезапуска ь иногда (на сколько я знаю)
Столкнулся с такими проблемами: иногда дублирует сообщения, отправляет вместо картинки ссылку, и можно ли сделать так чтобы он игнорировал альбомы на редите? Извините, если кажусь надоедлевым, но мне нет к кому обратиться, а Вы очень выручаете
Python:
Python:
import discord
import asyncpraw
import asyncio
import config

bot = discord.Client()
reddit = asyncpraw.Reddit(client_id=config.settings['CLIENT_ID'],
                     client_secret=config.settings['SECRET_CODE'],
                     user_agent='random_raddit_bot/0.0.1')
                    
AnimeART = []
TIMEOUT = 10
ID_CHANNEL = 683095464639463435
SUBREDDIT_NAME = 'AnimeART'
POST_LIMIT = 1

@bot.event
async def on_ready():
    channel = bot.get_channel(ID_CHANNEL)
    while True:
        await asyncio.sleep(TIMEOUT)
        AnimeART_submissions = await reddit.subreddit(SUBREDDIT_NAME)
        AnimeART_submissions = AnimeART_submissions.new(limit=POST_LIMIT)
        item = await AnimeART_submissions.__anext__()
        if item.title not in AnimeART:
            AnimeART.append(item.title)
            await channel.send(item.url)

bot.run(config.settings['DISCORD_TOKEN'])
 

Форум IT Специалистов