if message.author.bot:
return
from json import loads
@commands.command()
@commands.is_owner()
async def test(ctx, *, j: loads):
await ctx.send(f"{type(j)}\n{j}")
In [1]: "я".encode("CP154")
Out[1]: b'\xff'
In [2]: b'\xff'.decode("CP154")
Out[2]: 'я'
@commands.command(cooldown_after_parsing=True)
async def cmd(ctx, ...):
"""..."""
...
case_insensitive
конструктора бота:bot = commands.Bot(..., case_insensitive=True)
@bot.listen()
async def on_message(message):
if message.author.bot: # не реагируем на ботов, включая самого себя
return
if bot.user in message.mentions:
await message.reply("Hello world!") # или await message.channel.send("Hello world!")
@bot.check
async def global_guild_only(ctx):
if not ctx.guild:
raise commands.NoPrivateMessage # replicating guild_only check: https://github.com/Rapptz/discord.py/blob/42a538edda79f92a26afe0ac902b45c1ea20154d/discord/ext/commands/core.py#L1832-L1846
return True
@bot.command()
@commands.guild_only()
async def cmd(ctx, ...):
"""Here we go..."""
...
In [1]: from ast import literal_eval
In [2]: literal_eval("[1, 2, 3]")
Out[2]: [1, 2, 3]
from pypresence import Presence
p = Presence(APP_ID)
p.connect()
p.update(state="Black\N{BLACK STAR}Rock Shooter", large_image="brs", party_id="generic_party", join="some_random_hash")
# Return:
{'cmd': 'SET_ACTIVITY',
'data': {'state': 'Black★Rock Shooter',
'assets': {'large_image': ASSET_ID},
'party': {'id': 'generic_party'},
'secrets': {'join': 'some_random_hash'},
'name': 'B★RS Project',
'application_id': APP_ID,
'flags': 3,
'type': 0},
'evt': None,
'nonce': CUR_TIME}
for p in psutil.process_iter():
print(p)
@client.command() # Прекратите. Насиловать. Труп.
@commands.has_permsissions(administrator=True)
async def mp(ctx): # self если мы находимся в модуле или подклассе Bot'а
embed = discord.Embed(title="something here")
msg = await ctx.send(embed=embed)
client.react_role_msg = msg # Что лучше - "monkey patch"'ить объект бота или использовать global - решайте сами.
# В идеале - лучше создать модуль (cog/extension) или создать подкласс commands.Bot и использовать его, с объявленной переменной на уровне класса
@client.listen()
async def on_raw_reaction_add(payload):
if not getattr(client, "react_role_msg", None): # react_role_msg еще не объявлен у объекта бота
return
if payload.message_id != client.react_role_msg.id: # реакция проставлена на другом сообщении
return
if payload.emoji != "\N{WHITE HEAVY CHECK MARK}": # Реакция не "✅"
return
if not payload.member: # На тот случай если реакция пройдя все проверки выше окажется в личных сообщениях
return
await payload.member.add_roles(client.get_guild(398353602260405500).get_role(707803004268002512))
@commands.cooldown(1, 600, type=commands.BucketType.member)
if ban_entry := discord.utils.get(await member.guild.bans(), user__id=member.id):
print(member, "banned, reason: ", ban_entry.reason)