मैं एक डिस्कॉर्ड बॉट कोडिंग कर रहा हूं और मैं जानना चाहता हूं कि किसी भी उपयोगकर्ता द्वारा किसी संदेश से चैनल आईडी कैसे प्राप्त करें।

मैं वास्तव में एक टेक्स्ट मशीन कमांड बनाना चाहता हूं। यह उपयोगकर्ता को एक संदेश छोड़ता है जब वे AFK या ऑफ़लाइन होते हैं। जब वे वापस आते हैं और सर्वर के किसी भी चैनल में संदेश भेजते हैं, तो बॉट उन्हें तुरंत उसी चैनल पर संदेश भेजता है।

@client.command()
async def txt(ctx, receiver: discord.Member, *, message):
    await ctx.message.delete()
    def check(message: discord.Message):
        return message.author == receiver
    newembed = discord.Embed (title='On-Message Scheduled', description=f'Message will be delivered to the receiver as soon as he messages. \n Message: `{message}` \n to **{receiver}**')
    channel = await ctx.message.author.create_dm()
    x = await channel.send(embed=newembed)
    msg = await client.wait_for('message', check = check)
    await ctx.send(f'TEXT MACHINE \n **{ctx.message.author}:** `{message}`\n for {receiver.mention}')
    await x.add_reaction('✅')

यह वास्तव में कुछ हद तक काम करता है। लेकिन समस्या यह है कि अगर मैं करता हूं, तो चैनल 1 पर >txt @User#1234 this is a message कमांड और चैनल 2 पर उपयोगकर्ता संदेश, बॉट चैनल 1 को संदेश भेजता है, लेकिन मैं चाहता हूं कि बॉट चैनल को संदेश भेजे। यूजर ने मैसेज किया।

मदद की सराहना की जाएगी, धन्यवाद।

0
AssaultOPS 5 पद 2020, 19:17

1 उत्तर

सबसे बढ़िया उत्तर

यह आसान है, बस ctx.send का उपयोग न करें, बल्कि msg.channel.send का उपयोग करें। तो अंत से दूसरी पंक्ति इस तरह दिखेगी:

await msg.channel.send(f'TEXT MACHINE \n **{ctx.message.author}:** `{message}`\n for {receiver.mention}')
0
OLSE9 8 पद 2020, 13:23