मेरे पास एक कमांड है जो एक इनपुट लेता है और इसका मतलब टिकट सिस्टम के लिए उस इनपुट के आधार पर एक चैनल को हटाना है। कमांड अब चैनल को हटा सकता है हालांकि डिलीट विधि "आउटपुट" चर को नहीं पहचानती है।
मैं कलह के लिए नया हूँ, अग्रिम क्षमा करें।
if message.content.startswith(".close"):
verify_channel = client.get_channel(756238816511131773)
if not message.channel.id == verify_channel.id:
await message.delete()
else:
msg = message.content.split()
output = ""
for word in msg[1:]:
output += word
output += " "
guild = message.guild
channel = discord.utils.get(guild.text_channels, name=output)
await channel.delete()
आदेश चलाते समय उत्पन्न होने वाली त्रुटि:
AttributeError: 'NoneType' object has no attribute 'delete'
2 जवाब
यहां कार्य कोड है जो चैनल उल्लेखों का उपयोग करता है। चैट में उल्लेख इस तरह दिखते हैं: I'm mentioning a channel: #ghi
जहां ghi
एक चैनल का नाम है। यदि आप इसका प्रिंट आउट लेते हैं, तो यह #ghi को <#622194268139683870>
में बदल देता है। आप इसे रेगेक्स या कुछ के साथ निकाल सकते हैं लेकिन आप संदेश पर एक फ़ंक्शन भी कॉल कर सकते हैं:
channel = message.channel_mentions[0] #Only use the first channel mentioned
await channel.delete()
यहां एक काम करने वाला उदाहरण एक कमांड में परिवर्तित किया गया है, जिसे मैं प्रत्येक फ़ंक्शन को if startswith(command_name)
के साथ शुरू करने की सलाह देता हूं
bot = commands.Bot(command_prefix=".")
@bot.command()
async def close(ctx):
channel = ctx.message.channel_mentions[0]
await channel.delete()
print("Success")
फिर आप .close #ghi
जैसी चैट से इनवाइट कर सकते हैं
यदि आप इसे रखना चाहते हैं तो बस यह सुनिश्चित करें कि आप इसे अपने ON_MESSAGE ईवेंट के शीर्ष पर जोड़ते हैं
async def on_message(message):
await bot.process_commands(message)
मैंने परीक्षण किया है, यह काम करता है।
मैंने इसे शामिल नहीं किया क्योंकि आपका कार्य इसके बिना लिखा जा सकता है।
आप का उपयोग करके चैनल ऑब्जेक्ट को उसके नाम से प्राप्त कर सकते हैं प्राप्त करें
@bot.event
async def on_message(message):
if message.content.startswith(".close"):
guild = message.guild
channel = discord.utils.get(guild.text_channels, name="channel_name")
await channel.delete()
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।