Discord.net -- Discord Username to SocketGuildUser - discord.net

How do I change a Discord Username: Example####
To a SocketGuildPlayer so I can send a message to a Specific user?

It's very simple to do :
var x = (Context.Client.GetUser("username", "discrim") as SocketGuildUser);
Context.Client is of type DiscordSocketClient.

With little context, there is little I can suggest.
Use LinQ (e.g.)
SocketGuild.Users.where( x => x.Username == "Example" )
.where( x => x.Discriminator == "####")
to get the SocketGuildUser from the SocketGuild object.

Related

Codeigniter 4 - WHERE clause in Model

It's me again, Van.
Hi everyone,
I hope you're doing well!
I am doing a tutorial on a chat application using Codeigniter 4 with Ajax.
Everything worked fine until I applied the following code in the Model below
public function load_chat_data($sender_id,$receiver_id) {
// $where = ['sender_id' => $sender_id, 'receiver_id' => $receiver_id];
$where1 = "sender_id = $sender_id OR sender_id = $receiver_id";
$where2 = "receiver_id = $receiver_id OR receiver_id = $sender_id";
$builder = $this->db->table('chat_messages');
// $builder->where($where);
$builder->where($where1);
$builder->where($where2);
$builder->orderBy('chat_messages_id','ASC');
$results = $builder->get();
$rows = $results->getResultArray();
if($rows > 0)
{
return $rows;
}
else
{
return false;
}
}
The lines that I commented worked well before they were commented but it was not enough data I wanted to get so I tried to get both data of sender and receiver to display on the view by adding more code. However, when I tried $where1 and $where2 for the WHERE clauses, it didn't work. I think it must be the syntax error. Please correct my codes or any ideas on how the codes work with the same meaning supposed.
Thank you so much!!!
I tried as below, but it still didn't work.
$where1 = "sender_id={$sender_id} OR sender_id={$receiver_id}";
$where2 = "receiver_id={$receiver_id} OR receiver_id={$sender_id}";
Also, I tried:
$where1 = "'sender_id'=$sender_id OR 'sender_id'=$receiver_id";
$where2 = "'receiver_id'=$receiver_id OR 'receiver_id'=$sender_id";
I think you are trying to receive the messages of the conversation between two people. Can you try the following code for this?
$builder->groupStart(); // or $builder->orGroupStart();
$builder->where('sender_id', $sender_id);
$builder->where('receiver_id', $receiver_id);
$builder->groupEnd();
$builder->orGroupStart();
$builder->where('sender_id', $receiver_id);
$builder->where('receiver_id', $sender_id);
$builder->groupEnd();

Telegram API Client doesn't find group/send message

Im using TLSharp API Client for sending messages to groups, TLSharp is C#, but im trying to use it for VB.NET
C# Code:
//get user dialogs
var dialogs = (TLDialogsSlice) await client.GetUserDialogsAsync();
//find channel by title
var chat = dialogs.Chats
.Where(c => c.GetType() == typeof(TLChannel))
.Cast<TLChannel>()
.FirstOrDefault(c => c.Title == "<channel_title>");
//send message
await client.SendMessageAsync(new TLInputPeerChannel() { ChannelId = chat.Id, AccessHash = chat.AccessHash.Value }, "OUR_MESSAGE");
My VB.NET Code:
Dim dialogs = Await ((Await client.GetUserDialogsAsync()))
Dim chat = dialogs.Chats.lists.Where(Function(c) c.[GetType]() = GetType(TLChat)).Cast(Of TLChat)().FirstOrDefault(Function(c) c.title = "Group1")
Dim ChatId
Await client.SendMessageAsync(New TLInputPeerChat() {ChatId = chat.Id}, "TEST MSG")
The error i get:
Could not find public member 'GetAwaiter' in type 'TLDialogs'.'
I know it's not practical to convert it to vb.net, but I need it to integrate it into a project written in vb
I don't think that the client.GetUserDialogsAsync() method returns anything that is awaitable, so you should probably only have one Await in the line Dim dialogs = Await ((Await client.GetUserDialogsAsync())), and it may also require a cast:
Dim dialogs = DirectCast(Await client.GetUserDialogsAsync(), TLDialogsSlice)

Change discord bot name using vb.net

I am trying to make my own discord bot using VB.Net and I want to add command what change bot name command is working but name changing don't work and I don't know how to fix it.
my attempt #1
Dim Client As Discord.IDiscordClient
Dim Guild As IGuild = Await Client.GetGuildAsync("256776363892015115")
Dim user = Guild.GetUserAsync(Discord.CurrentUser.Id)
Await user.Result.ModifyAsync(New GuildUserProperties With {
.Nickname = "Kissa"
})
my attempt #2
Discord.GetGuild("256776363892015115").GetUser(Discord.CurrentUser.Id).ModifyAsync(New GuildUserProperties With {
.Nickname = "asd"
})
Images about code:
Do it like this:
Version 0.9:
var user = Discord.GetGuild("256776363892015115").GetUser(Discord.CurrentUser.Id);
await user.Edit(nickname: "MySuperBot");
Version 1.x
var guild = discordClient.GetGuild(256776363892015115);
var user = guild.GetUser(discordClient.CurrentUser.Id);
await user.ModifyAsync(x => {
x.Nickname = "MySuperBot";
});
discord.GetGuild("256776363892015115").GetUser(discord.CurrentUser.Id).ModifyAsync(Function(x)
x.Nickname = "MySuperBot"
End Function)

JSONP response in Lift Framework

Hi I am using Lift for my api and need some help generating a jSONP response. I have a working version of the JSON response and need to add to it so that I can use my api for cross-domain calls. Here is a code snippet of my api currently:
/Request/
case "api" :: "events" :: "person" :: _ Get req => JsonResponse(json_person(personEvents(req, req.request.queryString.mkString("")),person_details(req)))
/response/
def json_person(in : List[Events], person1 : List[Person]) : JValue = {
("person" ->
person1.map(people =>
("name" -> people.main_person_name.is) ~
("alternate_name" -> people.aka.is)
))}
The way I've done this in the past is to check for whether or not a "callback" query parameter was provided in the URL, and if so, use the function name provided to perform the callback. If not provided, send back the object itself.
case "api" :: "events" :: "person" :: _ Get req => {
val jsonObj = json_person(...)
S.param("callback") match {
case Full(callbackName) => JSFunc(callbackName, jsonObj).cmd
case _ => JsonResponse(jsonObj)
}
}

Google task API authentication issue ruby

I am having the problem to authenticate a user for google tasks.
At first it authenticates the user and do things perfect. But in the second trip it throws an error.
Signet::AuthorizationError - Authorization failed. Server message:
{
"error" : "invalid_grant"
}:
following is the code:
def api_client code=""
#client ||= (begin
client = Google::APIClient.new
client.authorization.client_id = settings.credentials["client_id"]
client.authorization.client_secret = settings.credentials["client_secret"]
client.authorization.scope = settings.credentials["scope"]
client.authorization.access_token = "" #settings.credentials["access_token"]
client.authorization.redirect_uri = to('/callbackfunction')
client.authorization.code = code
client
end)
end
get '/callbackfunction' do
code = params[:code]
c = api_client code
c.authorization.fetch_access_token!
result = c.execute("tasks.tasklists.list",{"UserId"=>"me"})
unless result.response.status == 401
p "#{JSON.parse(result.body)}"
else
redirect ("/oauth2authorize")
end
end
get '/oauth2authorize' do
redirect api_client.authorization.authorization_uri.to_s, 303
end
What is the problem in performing the second request?
UPDATE:
This is the link and parameters to user consent.
https://accounts.google.com/o/oauth2/auth?
access_type=offline&
approval_prompt=force&
client_id=somevalue&
redirect_uri=http://localhost:4567/oauth2callback&
response_type=code&
scope=https://www.googleapis.com/auth/tasks
The problem is fixed.
Solution:
In the callbackfunction the tokens which are received through the code provided by the user consent are stored in the database.
Then in other functions just retrieve those tokens from the database and use to process whatever you want against the google task API.
get '/callbackfunction' do
code = params[:code]
c = api_client code
c.authorization.fetch_access_token!
# store the tokens in the database.
end
get '/tasklists' do
# Retrieve the codes from the database and create a client
result = client.execute("tasks.tasklists.list",{"UserId"=>"me"})
unless result.response.status == 401
p "#{JSON.parse(result.body)}"
else
redirect "/oauth2authorize"
end
end
I am using rails, and i store the token only inside DB.
then using a script i am setting up new client before calling execute, following is the code.
client = Google::APIClient.new(:application_name => 'my-app', :application_version => '1.0')
client.authorization.scope = 'https://www.googleapis.com/auth/analytics.readonly'
client.authorization.client_id = Settings.ga.app_key
client.authorization.client_secret = Settings.ga.app_secret
client.authorization.access_token = auth.token
client.authorization.refresh_token = true
client.authorization.update_token!({access_token: auth.token})
client.authorization.fetch_access_token!
if client.authorization.refresh_token && client.authorization.expired?
client.authorization.fetch_access_token!
end
puts "Getting accounts list..."
result = client.execute(:api_method => analytics.management.accounts.list)
puts " ===========> #{result.inspect}"
items = JSON.parse(result.response.body)['items']
But,it gives same error you are facing,
/signet-0.4.5/lib/signet/oauth_2/client.rb:875:in `fetch_access_token': Authorization failed. Server message: (Signet::AuthorizationError)
{
"error" : "invalid_grant"
}
from /signet-0.4.5/lib/signet/oauth_2/client.rb:888:in `fetch_access_token!'
Please suggest why it is not able to use the given token? I have used oauth2, so user is already authorized. Now i want to access the api and fetch the data...
===================UPDATE ===================
Ok, two issues were there,
Permission is to be added to devise.rb,
config.omniauth :google_oauth2, Settings.ga.app_key,Settings.ga.app_secret,{
access_type: "offline",
approval_prompt: "" ,
:scope => "userinfo.email, userinfo.profile, plus.me, analytics.readonly"
}
refresh_token must be passed to the API call, otherwise its not able to authorize.
I hope this helps to somebody, facing similar issue.