discord автоматические реакции на все сообщения

NORTEX666

Участник
Автор темы
146
8
написал селфбота для дискорда который ставит на новые сообщения в указанном канале реакцию, хотелось бы что бы не нужно было менять код каждый раз и юзать это через команду типо .reaction

P.S скиньте доработанный код если такое можно сделать

мой код:
import discord
import asyncio
from discord.ext import commands

client = commands.Bot(command_prefix = ".", self_bot = True)
client.remove_command("help")

token = "token"

@client.event
async def on_message(message):
    if not message.channel.id == (айди канала типа): return
    await message.add_reaction("🥶")
client.run(token, bot = False)
 
Решение
D
Для того чтобы изменить канал, в котором бот будет добавлять реакции, можно добавить команду для изменения айди канала.

Ниже приведен пример кода с такой командой:


JavaScript:
import discord
import asyncio
from discord.ext import commands

client = commands.Bot(command_prefix = ".", self_bot = True)
client.remove_command("help")

token = "token"
channel_id = None

@client.event
async def on_message(message):
    if channel_id is None or message.channel.id != channel_id:
        return
    await message.add_reaction("🥶")

@client.command()
async def setchannel(ctx, channel: discord.TextChannel):
    global channel_id
    channel_id = channel.id
    await ctx.send(f"Канал для реакций изменен на {channel.mention}")

client.run(token, bot =...

teresen

Участник
29
18
Попробуй это:
Код:
import discord
import asyncio
from discord.ext import commands

client = commands.Bot(command_prefix = ".", self_bot = True)
client.remove_command("help")

token = "token"

@client.event
async def on_message(message):
    channelId = message.channel.id
    if not channelId == (айди канала типа): return
    await message.add_reaction("🥶")

@client.command()
@commands.is_owner()
async def setReaction(ctx, channelId, reaction):
    if not ctx.message.channel.id == (айди канала типа): return
    @client.event
    async def on_message(message):
        if not message.channel.id == channelId: return
        await message.add_reaction(reaction)

client.run(token, bot = False)
Там допишешь свое, что нужно.
 

NORTEX666

Участник
Автор темы
146
8
Попробуй это:
Код:
import discord
import asyncio
from discord.ext import commands

client = commands.Bot(command_prefix = ".", self_bot = True)
client.remove_command("help")

token = "token"

@client.event
async def on_message(message):
    channelId = message.channel.id
    if not channelId == (айди канала типа): return
    await message.add_reaction("🥶")

@client.command()
@commands.is_owner()
async def setReaction(ctx, channelId, reaction):
    if not ctx.message.channel.id == (айди канала типа): return
    @client.event
    async def on_message(message):
        if not message.channel.id == channelId: return
        await message.add_reaction(reaction)

client.run(token, bot = False)
Там допишешь свое, что нужно.
не работает
 

NORTEX666

Участник
Автор темы
146
8
Что именно не работает? Проверь права бота, дай мне лог, хоть что-нибудь.
какие права бота, я изначально написал что это селфбот, естественно я знаю что нужны права на проставление реакций и тд

Python:
import discord
import asyncio
from discord.ext import commands

client = commands.Bot(command_prefix = ".", self_bot = True)
client.remove_command("help")

token =

@client.command()
async def asd(ctx, channelId, reaction):
    await ctx.message.delete()
    if not ctx.message.channel.id == channelId: return
    @client.event
    async def on_message(message):
        if not message.channel.id == channelId: return
        await message.add_reaction(reaction)

client.run(token, bot = False)

пишу команду, указываю ид канала, реакцию в лог ничего не выдает но все равно ничего не происходит
 

vladsharik

Участник
131
19
какие права бота, я изначально написал что это селфбот, естественно я знаю что нужны права на проставление реакций и тд

Python:
import discord
import asyncio
from discord.ext import commands

client = commands.Bot(command_prefix = ".", self_bot = True)
client.remove_command("help")

token =

@client.command()
async def asd(ctx, channelId, reaction):
    await ctx.message.delete()
    if not ctx.message.channel.id == channelId: return
    @client.event
    async def on_message(message):
        if not message.channel.id == channelId: return
        await message.add_reaction(reaction)

client.run(token, bot = False)

пишу команду, указываю ид канала, реакцию в лог ничего не выдает но все равно ничего не происходит
Как мы тебе поможем если ты лог ошибки скинуть не можешь блять
 
D

deleted-user-427432

Гость
Для того чтобы изменить канал, в котором бот будет добавлять реакции, можно добавить команду для изменения айди канала.

Ниже приведен пример кода с такой командой:


JavaScript:
import discord
import asyncio
from discord.ext import commands

client = commands.Bot(command_prefix = ".", self_bot = True)
client.remove_command("help")

token = "token"
channel_id = None

@client.event
async def on_message(message):
    if channel_id is None or message.channel.id != channel_id:
        return
    await message.add_reaction("🥶")

@client.command()
async def setchannel(ctx, channel: discord.TextChannel):
    global channel_id
    channel_id = channel.id
    await ctx.send(f"Канал для реакций изменен на {channel.mention}")

client.run(token, bot = False)

В этом коде добавлена команда .setchannel, которая позволяет указать канал для реакций. Чтобы изменить канал, нужно написать команду .setchannel в канале, в котором хотите изменить канал для реакций, и указать канал, например: .setchannel #general. После этого бот будет добавлять реакции только в указанный канал.