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)
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)
type(row[0])
, скорее всего вы храните/БД возвращает ID в виде строки, get_role
принимает ID в виде int
get_channel
принимает на вход аргумент типа int
- ID канала.pass_context
в discord.py не существует уже два года.@bot.command()
async def cmd(ctx, channel: discord.TextChannel, *, msg: str):
"""Send msg to channel"""
await channel.send(msg)
user = discord.utils.get(bot.users, name="Name", discriminator="1234")
user_id = user.id
role = bot.get_guild(940108264659634772).get_role(695290124871312928)
for member in role.members:
print(str(member))
for member in role.members:
await member.send(message)