πŸ€– λ””μŠ€μ½”λ“œ 봇 κ°œλ°œμΌμ§€ - 2

Dongmin KimΒ·2022λ…„ 3μ›” 21일
1

πŸ€–Discord

λͺ©λ‘ 보기
2/3
post-thumbnail

πŸ“š 메세지 μ‚­μ œ, 인증

봇을 ν†΅ν•΄μ„œ μ±„νŒ…λ°©μ˜ 메세지λ₯Ό 효율적으둜 μ§€μšΈ 수 μžˆλ„λ‘ 메세지 μ‚­μ œ κΈ°λŠ₯을 μΆ”κ°€ν•΄μ£Όμ—ˆλ‹€.

μ΄ˆλ°˜μ—λŠ” μ΄λŸ°μ‹μœΌλ‘œ μ½”λ“œλ₯Ό μ§°λ‹€.

# κΆŒν•œμ„ 톡해 메세지 μ‚­μ œ κΈ°λŠ₯
    if message.content.startswith ("!μ²­μ†Œ"): # '!μ²­μ†Œ'λ₯Ό μž…λ ₯ν•œλ‹€λ©΄
        if message.author.guild_permissions.administrator: # μž…λ ₯ν•œ μœ μ €μ˜ κΆŒν•œμ„ ν™•μΈν•œλ‹€.
            amount = message.content[4:] # '!μ²­μ†Œ 숫자' μ—μ„œ 숫자λ₯Ό μΈμ‹ν•˜μ—¬ amount의 값을 λ„£λŠ”λ‹€.
            await message.delete()
            await message.channel.purge(limit=int(amount))

        else: # μž…λ ₯ν•œ μœ μ €κ°€ κΆŒν•œμ΄ μ—†λ‹€λ©΄,
            await message.delete() # μž…λ ₯ν•œ μ±„νŒ…μ„ μ‚­μ œν•˜κ³ , 
            await message.channel.send("{}, 당신은 λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” κΆŒν•œμ΄ μ—†μŠ΅λ‹ˆλ‹€".format(message.author.mention)) # λ¬Έμž₯을 좜λ ₯ν•œλ‹€.

'!μ²­μ†Œ 숫자' 라고 μž…λ ₯을 ν•΄μ„œ 숫자λ₯Ό μΈμ‹ν•˜λ„λ‘ ν•˜κΈ° μœ„ν•΄μ„œ startswith() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ€€λ‹€.

startsWith() ν•¨μˆ˜λŠ” λŒ€μƒ λ¬Έμžμ—΄μ΄ νŠΉμ • 문자 λ˜λŠ” λ¬Έμžμ—΄λ‘œ μ‹œμž‘ν•˜λŠ”μ§€ μ²΄ν¬ν•˜λŠ” ν•¨μˆ˜

μ΄λŸ°μ‹μœΌλ‘œ μ½”λ“œλ₯Ό μ§œλ‹ˆκΉ '!μ²­μ†Œ 숫자'λ₯Ό μž…λ ₯ν•˜λ©΄ 메세지λ₯Ό μ‚­μ œν•˜λŠ” κΈ°λŠ₯λ§Œμ„ μˆ˜ν–‰ν•˜κΈ° λ•Œλ¬Έμ— λ‚˜μ€‘μ— λͺ‡ 개의 메세지λ₯Ό μ§€μ› λŠ”μ§€ 확인을 ν•  수 μ—†μ–΄μ„œ λΆˆνŽΈν•  μˆ˜λ„ μžˆλ‹€κ³  μƒκ°ν•΄μ„œ μž„λ² λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ‡ 개의 메세지λ₯Ό μ‚­μ œν–ˆλŠ”μ§€ λ³΄μ—¬μ£Όκ²Œ μˆ˜μ •ν•΄μ•Όκ² λ‹€κ³  λŠκΌˆλ‹€.

μž„λ² λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ–΄λ–€ μœ μ €κ°€ λͺ‡ 개의 메세지λ₯Ό μ§€μ› λŠ”μ§€ 좜λ ₯ν•˜λ„λ‘ μˆ˜μ •ν–ˆλ‹€.

그리고 νŠΉμ • κΆŒν•œμ΄ μžˆλŠ” μœ μ €κ°€ λ‹€λ₯Έ μœ μ €μ—κ²Œ 역할을 쀄 수 μžˆλŠ” κΈ°λŠ₯을 좔가해쀬닀.

 # 인증 κΈ°λŠ₯
    if message.content.startswith ("!인증"): # '!인증'을 μž…λ ₯ν•œλ‹€λ©΄
        if message.author.guild_permissions.administrator: # μž…λ ₯ν•œ μœ μ €μ˜ κΆŒν•œμ„ ν™•μΈν•œλ‹€.
            await message.delete() # μž…λ ₯ν•œ μ±„νŒ…μ„ μ‚­μ œν•œλ‹€.
            user = message.mentions[0] # '!인증 @μœ μ €' μ—μ„œ μœ μ €μ •λ³΄λ₯Ό user에 λ‹΄λŠ”λ‹€.

            # 가독성을 μœ„ν•œ μž„λ² λ“œ 좜λ ₯
            embed = discord.Embed(title="πŸ‘‹ 인증 μ‹œμŠ€ν…œ", description="인증이 μ •μƒμ μœΌλ‘œ μ™„λ£Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€ !",timestamp=datetime.datetime.now(pytz.timezone('UTC')), color=0x4c2896)
            embed.add_field(name="인증 λŒ€μƒμž", value=f"{user.name} ( {user.mention} )", inline=False)
            embed.add_field(name="λ‹΄λ‹Ή κ΄€λ¦¬μž", value=f"{message.author} ( {message.author.mention} )", inline=False)
            embed.set_thumbnail(url="https://cdn.discordapp.com/attachments/955360993729449987/955392404280737812/99pk9saw36t7q8t3o0gt.jpg")
            embed.set_footer(text="Bot Made by. 김동민#0026, , λ¬Έμ˜λŠ” DM으둜 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€ πŸ’¬")
            await message.author.send (embed=embed) # μœ μ € 개인 DM으둜 μ „μ†‘ν•œλ‹€. μ±„νŒ…λ°©μ— 좜λ ₯λ˜λ„λ‘ ν•˜λ €λ©΄ messae.channel.send 둜 λ°”κΎΈλ©΄ λœλ‹€.
            role = discord.utils.get(message.guild.roles, name = 'μœ μ € πŸ˜€')
            await user.add_roles(role)

        else: # κΆŒν•œμ΄ μ—†λ‹€λ©΄
            await message.delete() # μž…λ ₯ν•œ 메세지λ₯Ό μ‚­μ œν•˜κ³ ,
            await message.channel.send(embed=discord.Embed(title="κΆŒν•œ λΆ€μ‘±", description = message.author.mention + "λ‹˜μ€ κΆŒν•œμ΄ μ—†μŠ΅λ‹ˆλ‹€", color = 0x4c2896)) # νŠΉμ • 문ꡬλ₯Ό 좜λ ₯ν•œλ‹€.
            embed.set_footer(text="Bot Made by. 김동민#0026, , λ¬Έμ˜λŠ” DM으둜 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€ πŸ’¬")
            embed.set_thumbnail(url="https://cdn.discordapp.com/attachments/955360993729449987/955392404280737812/99pk9saw36t7q8t3o0gt.jpg")

μ²­μ†Œ κΈ°λŠ₯μ—μ„œ μ‚¬μš©ν–ˆλ˜ startswith() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ '!인증 @μœ μ €'μ—μ„œ @μœ μ €μ˜ 정보λ₯Ό 받을 수 μžˆλ„λ‘ ν•œλ‹€.

λ‚˜λŠ” 역할을 'μœ μ € πŸ˜€' 둜 쀄 수 있게 ν–ˆλ‹€.

μ •μƒμ μœΌλ‘œ 'μœ μ € πŸ˜€' 역할을 받은 것을 λ³Ό 수 μžˆλ‹€.

κΈ°λŠ₯이 λͺ‡ 개 μ—†μŒμ—λ„ μ½”λ“œκ°€ 70쀄 μ΄μƒμ΄μ—¬μ„œ μ‘°λ§Œκ°„μ€ κΈ°λŠ₯에 λ”°λΌμ„œ νŒŒμΌμ„ λΆ„ν• ν•΄μ„œ μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ•Όκ² λ‹€κ³  μƒκ°ν–ˆλ‹€.

1개의 λŒ“κΈ€

comment-user-thumbnail
2022λ…„ 3μ›” 22일

μ‘μ›ν•©λ‹ˆλ‹€!

λ‹΅κΈ€ 달기